[ruby-dev:47511] Re: [ruby-cvs:49177] glass:r42008 (trunk): * configure.in: check strcasecmp().
From:
Tanaka Akira <akr@...>
Date:
2013-07-16 13:34:21 UTC
List:
ruby-dev #47511
2013年7月16日 22:03 Masaki Matsushita <glass.saga@gmail.com>: > 2013/7/16 Tanaka Akira <akr@fsij.org> >> st_strcasecmp は locale に依存しないようにするために定義したのですが、 > > システムの strcasecmp を使うと locale に依存してしまいませんか。 > > ASCIIの範囲内で動くものだと勘違いしていました。 > BSDのman pageにはlocaleに依存する旨書いてありますね。 > revertしました。すみません。 せっかくなので実際に動かないところを試してみました。 tr_TR という、その筋では有名な locale を使うと、 test-all は起動時に失敗します。 % ./ruby -v ruby 2.1.0dev (2013-07-16 trunk 42008) [x86_64-linux] % LC_ALL=tr_TR.UTF-8 make test-all CC = gcc LD = ld LDSHARED = gcc -shared CFLAGS = -O0 -fno-fast-math -g3 -Wall -Wextra -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=implicit-function-declaration -ansi -std=iso9899:199409 XCFLAGS = -D_FORTIFY_SOURCE=2 -fstack-protector -fno-strict-overflow -fvisibility=hidden -DRUBY_EXPORT -fPIE CPPFLAGS = -DRUBY_DEBUG_ENV -I. -I.ext/include/x86_64-linux -I./include -I. DLDFLAGS = -fstack-protector -pie SOLIBS = Using built-in specs. Target: x86_64-linux-gnu Configured with: ../src/configure -v --with-pkgversion='Debian 4.4.5-8' --with-bugurl=file:///usr/share/doc/gcc-4.4/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.4 --enable-shared --enable-multiarch --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.4 --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-objc-gc --with-arch-32=i586 --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu Thread model: posix gcc version 4.4.5 (Debian 4.4.5-8) ./miniruby -I./lib -I. -I.ext/common ./tool/runruby.rb --extout=.ext -- --disable-gems "./test/runner.rb" --ruby="./miniruby -I./lib -I. -I.ext/common ./tool/runruby.rb --extout=.ext -- --disable-gems" /home/akr/ruby/tst2/ruby/lib/rubygems/core_ext/kernel_require.rb:51:in `find': unknown encoding name - ascii-8bit (ArgumentError) from /home/akr/ruby/tst2/ruby/lib/rubygems/core_ext/kernel_require.rb:51:in `require' from /home/akr/ruby/tst2/ruby/lib/rubygems/core_ext/kernel_require.rb:51:in `require' from /home/akr/ruby/tst2/ruby/.ext/common/json/ext.rb:13:in `<module:Ext>' from /home/akr/ruby/tst2/ruby/.ext/common/json/ext.rb:12:in `<module:JSON>' from /home/akr/ruby/tst2/ruby/.ext/common/json/ext.rb:9:in `<top (required)>' from /home/akr/ruby/tst2/ruby/lib/rubygems/core_ext/kernel_require.rb:51:in `require' from /home/akr/ruby/tst2/ruby/lib/rubygems/core_ext/kernel_require.rb:51:in `require' from /home/akr/ruby/tst2/ruby/.ext/common/json.rb:58:in `<module:JSON>' from /home/akr/ruby/tst2/ruby/.ext/common/json.rb:54:in `<top (required)>' from /home/akr/ruby/tst2/ruby/lib/rubygems/core_ext/kernel_require.rb:51:in `require' from /home/akr/ruby/tst2/ruby/lib/rubygems/core_ext/kernel_require.rb:51:in `require' from /home/akr/ruby/tst2/ruby/lib/rdoc/text.rb:16:in `<top (required)>' from /home/akr/ruby/tst2/ruby/test/rdoc/test_rdoc_generator_markup.rb:5:in `<class:TestRDocGeneratorMarkup>' from /home/akr/ruby/tst2/ruby/test/rdoc/test_rdoc_generator_markup.rb:3:in `<top (required)>' from /home/akr/ruby/tst2/ruby/lib/rubygems/core_ext/kernel_require.rb:51:in `require' from /home/akr/ruby/tst2/ruby/lib/rubygems/core_ext/kernel_require.rb:51:in `require' from /home/akr/ruby/tst2/ruby/lib/test/unit.rb:245:in `block in non_options' from /home/akr/ruby/tst2/ruby/lib/test/unit.rb:239:in `each' from /home/akr/ruby/tst2/ruby/lib/test/unit.rb:239:in `non_options' from /home/akr/ruby/tst2/ruby/lib/test/unit.rb:52:in `process_args' from /home/akr/ruby/tst2/ruby/lib/test/unit.rb:826:in `process_args' from /home/akr/ruby/tst2/ruby/lib/test/unit.rb:831:in `run' from /home/akr/ruby/tst2/ruby/lib/test/unit.rb:838:in `run' from ./test/runner.rb:29:in `<main>' gmake: *** [yes-test-all] Hata 1 ascii-8bit という encoding が見つからないというエラーですが、 これはきっと i という文字が入っているからでしょう。 tr_TR では I と i は対応する大文字小文字の関係にないので、 ASCII-8BIT とは strcasecmp では等しくないことになってしまうのだと思います。 (revert された r42009 なら tr_TR でもちゃんと動きます。) -- [田中 哲][たなか あきら][Tanaka Akira]