[#15828] Ruby/Gtk for cygwin インストールについて — otokita@...

Ruby, 本 ML には大変お世話になっております.

15 messages 1999/08/02

[#15839] Windows95 で Tk — H サイトウ <HiroshiSaito@...>

17 messages 1999/08/02

[#15944] Ruby 1.3.7 — Yukihiro Matsumoto <matz@...>

Ruby 1.3.7 is repacked, check out:

19 messages 1999/08/06

[#16002] how to know binary file — kikutani@...

あるファイルがバイナリファイルかどうか知る方法というのはたしか

38 messages 1999/08/09
[#16010] Re: how to know binary file — WATANABE Hirofumi <watanabe@...> 1999/08/10

わたなべです.

[#16013] Re: how to know binary file — kikutani@... 1999/08/10

On Tue, 10 Aug 1999 11:06:25 +0900,

[#16016] Re: how to know binary file — Yamada Kenji <kyamada@...> 1999/08/10

[#16021] Re: how to know binary file — kikutani@... 1999/08/10

On Tue, 10 Aug 1999 11:56:55 +0900,

[#16026] Re: how to know binary file — Yamada Kenji <kyamada@...> 1999/08/10

[#16040] Re: how to know binary file — kikutani@... 1999/08/10

On Tue, 10 Aug 1999 13:55:59 +0900,

[#16095] rd2html — Toshiro Kuwabara <toshirok@...3.so-net.ne.jp>

はじめまして、Toshと申します。

32 messages 1999/08/12
[#16098] Re: rd2html — matz@... (Yukihiro Matsumoto) 1999/08/12

まつもと ゆきひろです

[#16104] Re: rd2html — Toshiro Kuwabara <toshirok@...3.so-net.ne.jp> 1999/08/13

Toshです。

[#16106] Re: rd2html — gotoken@... (GOTO Kentaro) 1999/08/13

ごとけんです

[#16111] Re: rd2html — Toshiro Kuwabara <toshirok@...3.so-net.ne.jp> 1999/08/13

Toshです。

[#16112] Re: rd2html — gotoken@... (GOTO Kentaro) 1999/08/13

ごとけんです

[#16115] Re: rd2html — Toshiro Kuwabara <toshirok@...3.so-net.ne.jp> 1999/08/13

Toshです。

[#16118] Ruby 1.4.0 — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

50 messages 1999/08/13
[#16120] Re: Ruby 1.4.0 — Katsuyuki Komatsu <komatsu@...> 1999/08/13

小松です。

[#16124] Re: Ruby 1.4.0 — matz@... (Yukihiro Matsumoto) 1999/08/13

まつもと ゆきひろです

[#16397] Re: Ruby 1.4.0 — wakou@... 1999/09/01

青山です。

[#16404] Re: Ruby 1.4.0 — hisanori@... 1999/09/01

松尾です。

[#16426] Re: Ruby 1.4.0 — matz@... (Yukihiro Matsumoto) 1999/09/01

まつもと ゆきひろです

[#16427] Re: Ruby 1.4.0 — "NAKAMURA, Hiroshi" <nakahiro@...> 1999/09/01

なひです.

[#16158] maillib? 0.5.0 — Minero Aoki <aamine@...>

あおきです。

57 messages 1999/08/15
[#16173] Re: maillib? 0.5.0 — matz@... (Yukihiro Matsumoto) 1999/08/16

まつもと ゆきひろです

[#16225] Re: maillib? 0.5.0 — Minero Aoki <aamine@...> 1999/08/19

あおきです。とりあえずlistに送ります。

[#16254] Re: maillib? 0.5.0 — matz@... (Yukihiro Matsumoto) 1999/08/22

まつもと ゆきひろです

[#16282] Re: maillib? 0.5.0 — Minero Aoki <aamine@...> 1999/08/24

あおきです。

[#16285] Re: maillib? 0.5.0 — matz@... (Yukihiro Matsumoto) 1999/08/24

まつもと ゆきひろです

[#16338] Re: maillib? 0.5.0 — Minero Aoki <aamine@...> 1999/08/27

あおきです。返事遅くなってすみません。

[#16344] Re: maillib? 0.5.0 — Minero Aoki <aamine@...> 1999/08/28

あおきです。

[#16363] Re: maillib? 0.5.0 — matz@... (Yukihiro Matsumoto) 1999/08/30

まつもと ゆきひろです

[#16440] Re: maillib? 0.5.0 — Minero Aoki <aamine@...> 1999/09/02

あおきです。

[#16545] Re: maillib? 0.5.0 — matz@... (Yukihiro Matsumoto) 1999/09/06

まつもと ゆきひろです

[#16632] Re: maillib? 0.5.0 — Minero Aoki <aamine@...> 1999/09/08

あおきです。

[#16646] Re: maillib? 0.5.0 — wakou@... 1999/09/08

青山です。

[#16648] RD and internationalization — wakou@... 1999/09/08

青山です。

[#16663] Re: RD and internationalization — Minero Aoki <aamine@...> 1999/09/09

あおきです。

[#16679] Re: RD and internationalization — wakou@... 1999/09/09

青山です。

[#16302] printf の $ について — "HIRATA Naoto" <hirata-naoto@...>

平田です.

18 messages 1999/08/24
[#16307] Re: printf の $ について — WATANABE Hirofumi <watanabe@...> 1999/08/25

わたなべです.

[#16313] Re: printf の $ について — matz@... (Yukihiro Matsumoto) 1999/08/25

まつもと ゆきひろです

[#16359] ruby1.4.0 on BSD/OS 4.0 — Yamada Kenji <kyamada@...>

16 messages 1999/08/29

[ruby-list:16315] Re: printf の $ について

From: EGUCHI Osamu <eguchi@...>
Date: 1999-08-25 12:44:04 UTC
List: ruby-list #16315
えぐち@エスアンドイー です。

>>> In message [ruby-list:16314] Re: printf の $ について
    On Wed, 25 Aug 1999 20:51:27 +0900, EGUCHI Osamu <eguchi@shizuokanet.ne.jp> said:

eguchi> えぐち@エスアンドイー です。
eguchi> 
eguchi> >>> In message [ruby-list:16313] Re: printf の $ について
eguchi>     On Wed, 25 Aug 1999 15:54:56 +0900, matz@netlab.co.jp (Yukihiro Matsumoto) said:
eguchi> 
eguchi> matz> まつもと ゆきひろです
eguchi> ...
eguchi> matz> sprintf.cのGETARG()マクロとかを書き換えればできるのかなあ。
eguchi> matz> しかし、当面私自身が手を付ける気は無いですね。
eguchi> matz> 誰かやる?
eguchi> 
eguchi> やっつけてみました。

参照順位の数え上げが間違えていました。
これでいいはず、、

	えぐち

Attachments (1)

sprintf2.diff (3.1 KB, text/x-diff)
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 12:39:28
@@ -135,8 +135,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 +149,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 +163,7 @@
 
     for (; p < end; p++) {
 	char *t;
+	int i;
 
 	for (t = p; t < end && *t != '%'; t++) ;
 	CHECK(t - p);
@@ -172,6 +175,8 @@
 	p = t + 1;		/* skip `%' */
 
 	width = prec = -1;
+      incl:
+	i = index++;
       retry:
 	switch (*p) {
 	  default:
@@ -208,6 +213,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];
+		index++;
+		goto retry;
+	    }
 	    flags |= FWIDTH;
 	    width = 0;
 	    for (; p < end && ISDIGIT(*p); p++) {
@@ -224,14 +235,23 @@
 	    }
 
 	    flags |= FWIDTH;
-	    tmp = GETARG();
+	    switch (p[1]) {
+	      case '1': case '2': case '3': case '4':
+	      case '5': case '6': case '7': case '8': case '9':
+		  if (p[2] == '$') {
+		      i = p[1] - '0';
+		      p = &p[2];
+		  }
+		  break;
+	    }
+	    tmp = GETARG(i);
 	    width = NUM2INT(tmp);
 	    if (width < 0) {
 		flags |= FMINUS;
 		width = -width;
 	    }
 	    p++;
-	    goto retry;
+	    goto incl;
 
 	  case '.':
 	    if (flags & FPREC) {
@@ -241,12 +261,21 @@
 	    prec = 0;
 	    p++;
 	    if (*p == '*') {
-		tmp = GETARG();
+		switch (p[1]) {
+		  case '1': case '2': case '3': case '4':
+		  case '5': case '6': case '7': case '8': case '9':
+		      if (p[2] == '$') {
+			  i = p[1] - '0';
+			  p = &p[2];
+		      }
+		      break;
+		}
+		tmp = GETARG(i);
 		prec = NUM2INT(tmp);
 		if (prec > 0)
 		    flags |= FPREC;
 		p++;
-		goto retry;
+		goto incl;
 	    }
 
 	    for (; p < end && ISDIGIT(*p); p++) {
@@ -264,11 +293,12 @@
 	  case '\0':
 	  case '%':
 	    PUSH("%", 1);
+	    index--;
 	    break;
 
 	  case 'c':
 	    {
-		VALUE val = GETARG();
+		VALUE val = GETARG(i);
 		char c;
 
 		if (!(flags & FMINUS))
@@ -283,7 +313,7 @@
 
 	  case 's':
 	    {
-		VALUE arg = GETARG();
+		VALUE arg = GETARG(i);
 		int len;
 
 		str = rb_obj_as_string(arg);
@@ -329,7 +359,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 +593,7 @@
 	  case 'e':
 	  case 'E':
 	    {
-		VALUE val = GETARG();
+		VALUE val = GETARG(i);
 		double fval;
 		int i, need = 6;
 		char fbuf[32];

In This Thread