[#32910] NKF,Kconv — Kazuhiro NISHIYAMA <zn@...>
西山和広です。
[#32913] openの"b"とencoding — Kazuhiro NISHIYAMA <zn@...>
西山和広です。
[#32922] SEGV by regexp match in while loop — Tanaka Akira <akr@...>
Debian GNU/Linux (sarge) の gcc-3.4 を使ってビルドした ruby
[#32935] queue and timeout — Tanaka Akira <akr@...>
timeout で Queue#pop に時間制限をつけた時、タイムアウト時に
まつもと ゆきひろです
[#32940] ripper cannot build on win32 — yukimi_sake <yukimi_sake@...>
雪見酒です。
[#32945] Shift_JIS variants and UTF-16 support — "U.Nakamura" <usa@...>
こんにちは、なかむら(う)です。
中村さん、こんにちは。
まつもと ゆきひろです
成瀬です。
まつもと ゆきひろです
こんにちは、なかむら(う)です。
成瀬です。
こんにちは、なかむら(う)です。
成瀬です。
こんにちは、なかむら(う)です。
まつもと ゆきひろです
[#32946] replica と alias の違い(encoding) — KIMURA Koichi <kimura.koichi@...>
木村です。
[#32987] error with open-uri (instance_eval?) — "U.Nakamura" <usa@...>
こんにちは、なかむら(う)です。
[#32988] Re: [ruby-cvs:22194] Ruby:r14957 (trunk): * encoding.c (rb_enc_init): UTF-{16,32}{BE,LE} are not builtin. — Yukihiro Matsumoto <matz@...>
まつもと ゆきひろです
[#32992] ASCII is alias of US-ASCII; replica of dummy encoding is not a dummy — "NARUSE, Yui" <naruse@...>
成瀬です。
まつもと ゆきひろです
At 18:13 08/01/09, Yukihiro Matsumoto wrote:
成瀬です。
まつもと ゆきひろです
成瀬です。
まつもと ゆきひろです
なかだです。
まつもと ゆきひろです
[#32996] binmode and ASCII-8BIT — Kazuhiro NISHIYAMA <zn@...>
西山和広です。
[#33069] Re: [ruby-cvs:22244] Ruby:r15007 (trunk): * enc/make_encdb.rb: added. search enc/*.c and make encoding database. — Yukihiro Matsumoto <matz@...>
まつもと ゆきひろです
まつもと ゆきひろです
[#33076] Encoding.compatible? and dummy encodings — sheepman <sheepman@...>
こんにちは sheepman です。
成瀬です。
まつもと ゆきひろです
[#33078] NEW REPLICA ENCODINGS AND ENCODING ALIASES — "NARUSE, Yui" <naruse@...>
成瀬です。
[#33101] String#valid_encoding? shoud be strict? — Masayoshi Takahashi <maki@...>
高橋征義です。1.9のエンコーディングとString#valid_encoding?について。
[#33139] Bignum#* might invoke GC parallelly? — "Yusuke ENDOH" <mame@...>
遠藤と申します。
[#33156] default script encoding and -K option — sheepman <sheepman@...>
こんばんは sheepman です。
こんにちは、なかむら(う)です。
まつもと ゆきひろです
[#33164] default encoding for Marshal.load — "Shugo Maeda" <shugo@...>
前田です。
まつもと ゆきひろです
[#33185] コンパイルの問題 (r15218) — Martin Duerst <duerst@...>
r15128 当たりで (実はもう少し前から) コンパイルできなくなりました。
[#33218] Re: Ruby1.9String バイト列へのインデックス アクセス — "Hisanori Kiryu" <hkiryu@...>
> ちなみに、byte のではなく bytes の方が妥当だと思います。
[#33224] printf "%0x" — Tanaka Akira <akr@...>
printf の %0x に負の整数を与えると、値によって .. がついたり
[#33226] [PATCH] warnings of enc/trans/utf_16_32.c — Nobuyoshi Nakada <nobu@...>
なかだです。
[#33239] Re: [ruby-cvs:22386] Ruby:r15149 (trunk): * string.c (rb_str_each_char): move forward. — Tanaka Akira <akr@...>
In article <200801210259.m0L2x3CW017171@ci.ruby-lang.org>,
なかだです。
In article <20080121065650.55F60E0662@mail.bc9.jp>,
なかだです。
まつもと ゆきひろです
[#33247] requests to transcode — "U.Nakamura" <usa@...>
こんにちは、なかむら(う)です。
[#33303] Time#strftimeのエンコーディング — rubikitch@...
るびきちです。
まつもと ゆきひろです
なかだです。
西山和広です。
[#33368] summary of script encoding — "U.Nakamura" <usa@...>
こんにちは、なかむら(う)です。
まつもと ゆきひろです
こんにちは、なかむら(う)です。
まつもと ゆきひろです
永井@知能.九工大です.
[#33387] HashからStructを作る — rubikitch@...
るびきちです。
まつもと ゆきひろです
From: Yukihiro Matsumoto <matz@ruby-lang.org>
まつもと ゆきひろです
From: Yukihiro Matsumoto <matz@ruby-lang.org>
まつもと ゆきひろです
From: Yukihiro Matsumoto <matz@ruby-lang.org>
まつもと ゆきひろです
[#33399] regexp match /.../n against to UTF-8 string — Tanaka Akira <akr@...>
以下のように、つけてもいない正規表現の n オプションに関して
[#33400] /#{}/e.encoding — Tanaka Akira <akr@...>
以下のように /#{}/e の encoding が US-ASCII になります。
[#33403] wrapped String#gsub — "Park Ji-In" <tisphie@...>
こんにちは、朴 芝印です。
[#33417] コンパイルの問題 — Martin Duerst <duerst@...>
現在 (r15264 で) コンパイル使用とすると、エラーになります:
At 16:28 08/01/27, you wrote:
[#33433] Win32OLE: set encoding to OLE string — "U.Nakamura" <usa@...>
こんにちは、なかむら(う)です。
成瀬です。
助田です。
こんにちは、なかむら(う)です。
こんにちは、なかむら(う)です。
[#33452] enc/euc_kr.c (euckr_mbc_enc_len) euc_kr.c is also used by CP942 — "NARUSE, Yui" <naruse@...>
成瀬です。
まつもと ゆきひろです
成瀬です。
[#33461] Failed to make ruby-1.8.6-p111 on MacOSX 10.5(Leopard) — MORITA Hideyuki <h-morita@...>
=1B$B?9ED$H?=3D$7$^$9!#=1B(B
なかだです。
森田です。
なかだです。
森田です。
天野竜太郎と申します。
森田です。
天野です。
森田です。
天野です。
森田です。
天野です。
森田です。
天野です。
[#33488] 現在の script encoding の値を得る方法は? — Hidetoshi NAGAI <nagai@...>
永井@知能.九工大です.
まつもと ゆきひろです
永井@知能.九工大です.
成瀬です。
永井@知能.九工大です.
成瀬です。
永井@知能.九工大です.
成瀬です。
In article <47A00E86.4010701@airemix.com>,
成瀬です。
In article <47A03C9D.2090008@airemix.com>,
In article <87hcgvu1ng.fsf@fsij.org>,
[#33521] nkf の CP932 — Martin Duerst <duerst@...>
成瀬さん、皆さん、こんにちは。
[#33548] block parameter of String#gsub — "NARUSE, Yui" <naruse@...>
成瀬です。
まつもと ゆきひろです
[ruby-dev:33225] Re: printf "%0x"
なかだです。
At Mon, 21 Jan 2008 02:50:50 +0900,
Tanaka Akira wrote in [ruby-dev:33224]:
> printf の %0x に負の整数を与えると、値によって .. がついたり
> つかなかったりします。
>
> % ./ruby -ve '[-0x40000000, -0x40000001].each {|v| printf "%0x\n", v }'
> ruby 1.9.0 (2008-01-19 revision 0) [i686-linux]
> ..fc0000000
> fbfffffff
それ以外にも、精度を指定すると妙な感じです。
$ ruby19 -ve 'printf "|%1$.4x|%1$04x|%1$6.4x|\n", -1'
ruby 1.9.0 (2008-01-19 revision 15119) [i686-linux]
|f..f|f..f| f..f|
test/ruby/test_sprintf.rbには%bのテストしかないのですが、負の値
で".."がつかないというのはテストのほうがおかしくないでしょうか。
* sprintf.c (remove_sign_bits): returns pointer to the first char to
be used, instead of copying.
* sprintf.c (rb_str_format): negative indicator dots should come
before sign digits always. [ruby-dev:33224]
Index: sprintf.c
===================================================================
--- sprintf.c (revision 15146)
+++ sprintf.c (working copy)
@@ -47,10 +47,6 @@ remove_sign_bits(char *str, int base)
}
}
- if (t > s) {
- while (*t) *s++ = *t++;
- *s = '\0';
- }
- return str;
+ return t;
}
@@ -509,8 +505,9 @@ rb_str_format(int argc, const VALUE *arg
case 'u':
{
+ volatile VALUE tmp1;
volatile VALUE val = GETARG();
- char fbuf[32], nbuf[64], *s, *t;
+ char fbuf[32], nbuf[64], *s;
const char *prefix = 0;
- int sign = 0;
+ int sign = 0, dots = 0;
char sc = 0;
long v = 0;
@@ -613,17 +610,17 @@ rb_str_format(int argc, const VALUE *arg
sprintf(fbuf, "%%l%c", c);
sprintf(nbuf, fbuf, v);
+ s = nbuf;
}
else {
s = nbuf;
if (v < 0) {
- strcpy(s, "..");
- s += 2;
+ dots = 1;
}
sprintf(fbuf, "%%l%c", *p == 'X' ? 'x' : *p);
- sprintf(s, fbuf, v);
+ sprintf(++s, fbuf, v);
if (v < 0) {
char d = 0;
- remove_sign_bits(s, base);
+ s = remove_sign_bits(s, base);
switch (base) {
case 16:
@@ -633,10 +630,8 @@ rb_str_format(int argc, const VALUE *arg
}
if (d && *s != d) {
- memmove(s+1, s, strlen(s)+1);
- *s = d;
+ *--s = d;
}
}
}
- s = nbuf;
}
else {
@@ -659,5 +654,4 @@ rb_str_format(int argc, const VALUE *arg
}
else {
- volatile VALUE tmp1;
if (!RBIGNUM_SIGN(val)) {
val = rb_big_clone(val);
@@ -667,24 +661,17 @@ rb_str_format(int argc, const VALUE *arg
s = RSTRING_PTR(tmp);
if (*s == '-') {
+ dots = 1;
if (base == 10) {
rb_warning("negative number for %%u specifier");
}
- remove_sign_bits(++s, base);
- tmp = rb_str_new(0, 3+strlen(s));
- t = RSTRING_PTR(tmp);
- if (!(flags&(FPREC|FZERO))) {
- strcpy(t, "..");
- t += 2;
- }
+ s = remove_sign_bits(++s, base);
switch (base) {
case 16:
- if (s[0] != 'f') strcpy(t++, "f"); break;
+ if (s[0] != 'f') *--s = 'f'; break;
case 8:
- if (s[0] != '7') strcpy(t++, "7"); break;
+ if (s[0] != '7') *--s = '7'; break;
case 2:
- if (s[0] != '1') strcpy(t++, "1"); break;
+ if (s[0] != '1') *--s = '1'; break;
}
- strcpy(t, s);
- s = RSTRING_PTR(tmp);
}
}
@@ -693,4 +680,8 @@ rb_str_format(int argc, const VALUE *arg
pos = -1;
len = strlen(s);
+ if (dots) {
+ prec -= 2;
+ width -= 2;
+ }
if (*p == 'X') {
@@ -722,4 +713,8 @@ rb_str_format(int argc, const VALUE *arg
}
CHECK(prec - len);
+ if (dots) {
+ memcpy(&buf[blen], "..", 2);
+ blen += 2;
+ }
if (!bignum && v < 0) {
char c = sign_bits(base, p);
Index: test/ruby/test_sprintf.rb
===================================================================
--- test/ruby/test_sprintf.rb (revision 15146)
+++ test/ruby/test_sprintf.rb (working copy)
@@ -20,15 +20,15 @@ class TestSprintf < Test::Unit::TestCase
assert_equal("0001", sprintf("%04b", 1))
assert_equal("0010", sprintf("%04b", 2))
- assert_equal("1111", sprintf("%04b", -1))
+ assert_equal("..11", sprintf("%04b", -1))
assert_equal("0000", sprintf("%.4b", 0))
assert_equal("0001", sprintf("%.4b", 1))
assert_equal("0010", sprintf("%.4b", 2))
- assert_equal("1111", sprintf("%.4b", -1))
+ assert_equal("..11", sprintf("%.4b", -1))
assert_equal(" 0000", sprintf("%6.4b", 0))
assert_equal(" 0001", sprintf("%6.4b", 1))
assert_equal(" 0010", sprintf("%6.4b", 2))
- assert_equal(" 1111", sprintf("%6.4b", -1))
+ assert_equal(" ..11", sprintf("%6.4b", -1))
assert_equal(" 0b0", sprintf("%#4b", 0))
@@ -40,15 +40,15 @@ class TestSprintf < Test::Unit::TestCase
assert_equal("0b01", sprintf("%#04b", 1))
assert_equal("0b10", sprintf("%#04b", 2))
- assert_equal("0b11", sprintf("%#04b", -1))
+ assert_equal("0b..1", sprintf("%#04b", -1))
assert_equal("0b0000", sprintf("%#.4b", 0))
assert_equal("0b0001", sprintf("%#.4b", 1))
assert_equal("0b0010", sprintf("%#.4b", 2))
- assert_equal("0b1111", sprintf("%#.4b", -1))
+ assert_equal("0b..11", sprintf("%#.4b", -1))
assert_equal("0b0000", sprintf("%#6.4b", 0))
assert_equal("0b0001", sprintf("%#6.4b", 1))
assert_equal("0b0010", sprintf("%#6.4b", 2))
- assert_equal("0b1111", sprintf("%#6.4b", -1))
+ assert_equal("0b..11", sprintf("%#6.4b", -1))
assert_equal("+0", sprintf("%+b", 0))
--
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
中田 伸悦