[#15820] maillib with big base64 — kikutani@...
maillib を使いはじめましたが、マルチパートで
[#15828] Ruby/Gtk for cygwin インストールについて — otokita@...
Ruby, 本 ML には大変お世話になっております.
はじめまして、Nobuaki Kannoと申します。
Nobuaki Kannoです。
[#15839] Windows95 で Tk — H サイトウ <HiroshiSaito@...>
前橋です。
まつもと ゆきひろです
前橋です。
まつもと ゆきひろです
[#15865] mime.rb rev 1.4 — "NAKAMURA, Hiroshi" <nakahiro@...>
なひです.
なひです.
[#15873] UDPsocket#recvfrom の API 変更について — Toshihiko SHIMOKAWA / 下川俊彦 <toshi@...>
ruby-dev で始まった話ですが、こちらに振ります。
まつもと ゆきひろです
福嶋です。
まつもと ゆきひろです
[#15894] RE: difference of system() between UNIX and Win dows — 助田 雅紀 <masaki.suketa@...>
助田です.
[#15899] ruby/tk on cygwin /w Tk8.1 — たむら けんいち <tamura-r@...>
たむら です。
[#15902] sybase module — Hisakuni FUJIMOTO <hisa@...>
藤本です、こんにちは。
こんばんは。三並です。
藤本です。
[#15911] Re: [ruby-talk:00563] Date class and rfc822 — Wakou Aoyama <wakou@...>
青山です。
まつもと ゆきひろです
[#15920] Re: [][-n,n] — Inaba Hiroto <inaba@...>
From: Wakou Aoyama <wakou@fsinet.or.jp>
[#15927] Ruby 1.3.7 — Yukihiro Matsumoto <matz@...>
Ruby 1.3.7 is out, check out:
渡辺哲也です。
まつもと ゆきひろです
渡辺哲也です。
[#15944] Ruby 1.3.7 — Yukihiro Matsumoto <matz@...>
Ruby 1.3.7 is repacked, check out:
わたなべです.
なひです.
[#15955] echo しない readline — m_seki@...
ごとけんです
まつもと ゆきひろです
[#15966] あしたのために(その一) — kikutani@...
ふと頭に浮かんだフレーズ:
[#16002] how to know binary file — kikutani@...
あるファイルがバイナリファイルかどうか知る方法というのはたしか
わたなべです.
On Tue, 10 Aug 1999 11:06:25 +0900,
わたなべです.
On Tue, 10 Aug 1999 11:32:12 +0900,
わたなべです.
On Tue, 10 Aug 1999 11:56:55 +0900,
On Tue, 10 Aug 1999 13:55:59 +0900,
ごとけんです
ごとけんです
On Wed, 11 Aug 1999 09:55:16 +0900,
わたなべです.
ごとけんです
ごとけんです
[#16095] rd2html — Toshiro Kuwabara <toshirok@...3.so-net.ne.jp>
はじめまして、Toshと申します。
まつもと ゆきひろです
Toshです。
ごとけんです
Toshです。
ごとけんです
Toshです。
まつもと ゆきひろです
Toshです。ひさしぶりに英作文してへろへろ。
ごとけんです
Toshです。
[#16118] Ruby 1.4.0 — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
小松です。
まつもと ゆきひろです
青山です。
松尾です。
青山です。
まつもと ゆきひろです
なひです.
松尾です。
[#16153] ANN: testsupp 0.2 released. — gotoken@... (GOTO Kentaro)
ごとけんです
[#16157] rdtool-0.2.1 — Toshiro Kuwabara <toshirok@...3.so-net.ne.jp>
Toshです。
[#16158] maillib? 0.5.0 — Minero Aoki <aamine@...>
あおきです。
まつもと ゆきひろです
あおきです。とりあえずlistに送ります。
まつもと ゆきひろです
あおきです。
まつもと ゆきひろです
あおきです。返事遅くなってすみません。
あおきです。
まつもと ゆきひろです
あおきです。
まつもと ゆきひろです
あおきです。
青山です。
青山です。
あおきです。
青山です。
なかだです。
あおきです。
青山です。
あおきです。
青山です。
あおきです。
あおきです。
[#16209] year of parsedate — kikutani@...
parsedateって最近仕様が変わったのかしら。
[#16216] timeout.rb — wakou@...
青山です。
[#16233] C source to HTML converter — ymaekawa@...
前川と申します。
[#16237] bind(2) IRIX5.3(Indy) — Masatoshi SEKI <m_seki@...>
[#16242] ruby から MS SQL Server へのアクセス — Keisuke Minami <keisuke@...>
こんばんは。三並です。
[#16250] ruby hacking guide — Minero Aoki <aamine@...>
あおきです。
まつもと ゆきひろです
[#16268] matrix bug — Takashi Shimizu <simtak@...>
清水@biglobeです。
[#16297] Ruby/GTK 0.21 released — Hiroshi Igarashi <igarashi@...>
いがらし%Ruby/GTKメンテナです。
[#16302] printf の $ について — "HIRATA Naoto" <hirata-naoto@...>
平田です.
わたなべです.
まつもと ゆきひろです
平田です.わたなべさん,木村さん,まつもとさん,えぐちさん,
えぐち@エスアンドイー です。
[#16341] GetoptLong#each — kjana@... (YANAGAWA Kazuhisa)
GetoptLong#each で何か一回余分にまわって GetoptLong オブジェクトのイン
[#16351] executable statements in class def — kikutani@...
クラスの定義の中はメソッドとか、定数とかの定義だけかと思ったら
[#16359] ruby1.4.0 on BSD/OS 4.0 — Yamada Kenji <kyamada@...>
わたなべです.
わたなべです.
[#16366] ruby on Compaq — Shugo Maeda <shugo@...>
前田です。
重弘です.
[#16371] jcode.rb String#tr! — TADA Tadashi <sho@...>
多田@S.P.C.です。
わたなべです.
まつもと ゆきひろです
多田@S.P.C.です。
[ruby-list:16325] Re: printf の $ について
えぐち@エスアンドイー です。
>>> In message [ruby-list:16322] Re: printf の $ について
On Thu, 26 Aug 1999 01:27:39 +0900, matz@netlab.co.jp (Yukihiro Matsumoto) said:
matz> まつもと ゆきひろです
matz>
matz> In message "[ruby-list:16314] Re: printf の $ について"
matz> on 99/08/25, EGUCHI Osamu <eguchi@shizuokanet.ne.jp> writes:
matz>
matz> |matz> sprintf.cのGETARG()マクロとかを書き換えればできるのかなあ。
matz> |matz> しかし、当面私自身が手を付ける気は無いですね。
matz> |matz> 誰かやる?
matz> |
matz> |やっつけてみました。
matz> |
matz> | + % の使える場所に %digit$ を使えるようにした。
matz> | + % を修飾する * の場所に *digit$ を使えるようにした。
matz> | ※digit の取り得る範囲は 1..9 です。
matz> |
matz> |という内容です。
matz>
matz> このパッチ(正確には[ruby-list:16316]のパッチ)は基本的に取り
matz> 込む方向で検討しようと思います。福間さんのパッチと違いがある
matz> んですかね。
違いは基本的には、無いはずです。
しいて言えば、私の方にはバグがある事かな ^^;;
あと、福間さん版では、
% ./ruby -e 'printf "%2$s - %1$s : %s\n", "One", "Two", "Three"'
Two - One : Two
% ./ruby -e 'printf "%2$s - %2$s : %s\n", "One", "Two", "Three"'
Two - Two : Three
となり、最後につかった %n$ により以降の % の
パラメータ参照位置が降られます。
ちょっと妙な気がしますが。FreeBSD-3.2-STABLE の printf(3)でも、
SunOS-4.1.1-JLE でも同じですので、こういう物なのでしょう。
#標準では、どのように規定しているかは、まだ調べていません。
#C9X の文書あたればいいのかな、、C9X って年内に成果でるんぢゃろか
matz> ただ、こいつは1.4系には取り込みません。
matz> 将来の1.5系以降ですね。
それが良さげですね。
#うぅむ、[ruby-dev:7754](福間版)の方が良いかも知れない ^^;;
えぐち
参考までに、
% ./ruby -e 'printf("%*s\n", 4, "foo")'
4
対策版付けます。
Attachments (1)
Index: sprintf.c
===================================================================
RCS file: /usr/home/eguchi/cvs.netlab.co.jp//ruby/sprintf.c,v
retrieving revision 1.2
diff -d -u -r1.2 sprintf.c
--- sprintf.c 1999/08/13 05:45:14 1.2
+++ sprintf.c 1999/08/25 14:08:10
@@ -121,6 +121,7 @@
#define FSPACE 16
#define FWIDTH 32
#define FPREC 64
+#define FVARG 128
#define CHECK(l) {\
while (blen + (l) >= bsiz) {\
@@ -135,8 +136,9 @@
blen += (l);\
}
-#define GETARG() \
- ((argc == 0)?(rb_raise(rb_eArgError, "too few argument."),0):(argc--,((argv++)[0])))
+#define GETARG(index) \
+ ((index<0||index>=argc)?(rb_raise(rb_eArgError, "too few argument."),0)\
+ :argv[index])
VALUE
rb_f_sprintf(argc, argv)
@@ -148,11 +150,12 @@
int blen, bsiz;
VALUE result;
- int width, prec, flags = FNONE;
+ int width, prec, flags = FNONE, index = 0;
VALUE tmp;
VALUE str;
- fmt = GETARG();
+ fmt = GETARG(index);
+ index++;
p = str2cstr(fmt, &blen);
end = p + blen;
blen = 0;
@@ -161,6 +164,7 @@
for (; p < end; p++) {
char *t;
+ int i;
for (t = p; t < end && *t != '%'; t++) ;
CHECK(t - p);
@@ -172,6 +176,8 @@
p = t + 1; /* skip `%' */
width = prec = -1;
+ flags = FNONE;
+ i = index;
retry:
switch (*p) {
default:
@@ -208,6 +214,12 @@
case '1': case '2': case '3': case '4':
case '5': case '6': case '7': case '8': case '9':
+ if (p[1] == '$') {
+ i = *p - '0';
+ p = &p[2];
+ flags |= FVARG;
+ goto retry;
+ }
flags |= FWIDTH;
width = 0;
for (; p < end && ISDIGIT(*p); p++) {
@@ -224,7 +236,19 @@
}
flags |= FWIDTH;
- tmp = GETARG();
+ tmp = GETARG(index);
+ index++;
+ if ((flags & FVARG) == 0) i = index;
+ switch (p[1]) {
+ case '1': case '2': case '3': case '4':
+ case '5': case '6': case '7': case '8': case '9':
+ if (p[2] == '$') {
+ int inx = p[1] - '0';
+ p = &p[2];
+ tmp = GETARG(inx);
+ }
+ break;
+ }
width = NUM2INT(tmp);
if (width < 0) {
flags |= FMINUS;
@@ -241,7 +265,19 @@
prec = 0;
p++;
if (*p == '*') {
- tmp = GETARG();
+ tmp = GETARG(index);
+ index++;
+ if ((flags & FVARG) == 0) i = index;
+ switch (p[1]) {
+ case '1': case '2': case '3': case '4':
+ case '5': case '6': case '7': case '8': case '9':
+ if (p[2] == '$') {
+ int inx = p[1] - '0';
+ p = &p[2];
+ tmp = GETARG(inx);
+ }
+ break;
+ }
prec = NUM2INT(tmp);
if (prec > 0)
flags |= FPREC;
@@ -264,11 +300,11 @@
case '\0':
case '%':
PUSH("%", 1);
- break;
+ continue;
case 'c':
{
- VALUE val = GETARG();
+ VALUE val = GETARG(i);
char c;
if (!(flags & FMINUS))
@@ -283,7 +319,7 @@
case 's':
{
- VALUE arg = GETARG();
+ VALUE arg = GETARG(i);
int len;
str = rb_obj_as_string(arg);
@@ -329,7 +365,7 @@
case 'b':
case 'u':
{
- volatile VALUE val = GETARG();
+ volatile VALUE val = GETARG(i);
char fbuf[32], nbuf[64], *s, *t;
char *prefix = 0;
int sign = 0;
@@ -563,7 +599,7 @@
case 'e':
case 'E':
{
- VALUE val = GETARG();
+ VALUE val = GETARG(i);
double fval;
int i, need = 6;
char fbuf[32];
@@ -605,7 +641,7 @@
}
break;
}
- flags = FNONE;
+ index++;
}
sprint_exit: