[#4060] [patch] require problem — shugo@... (Shugo Maeda)
前田です。
新井です。
[#4076] Re: call/cc — shugo@... (Shugo Maeda)
前田@リコーです。
In message <m0zyZO8-0003EbC@crunkey.chocolate.or.jp>
えぐち@エスアンドイー です。
[#4090] finalizers — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
[#4095] Ruby on CYGWIN — TAKAHASHI Masayoshi <maki@...>
高橋です。久しぶりに書きます。
わたなべです.
高橋です。Rubyのリンク集から見つけたのですが、sgmailって
前橋です。
高橋です。
前橋です。
[#4186] UTF-8 patch for Ruby-1.2.1 — Yoshida Masato <yoshidam@...>
よしだです
まつもと ゆきひろです
[#4193] open with O_CREAT|O_EXCL — 民斗 <tommy@...>
民斗です。
[#4203] Compile via WATCOM C — ARIMA Yasuhiro <fit0298@...>
有馬です。
Regard to "[ruby-dev:4204] Re: Compile via WATCOM C"
Regard to "[ruby-dev:4215] Re: Compile via WATCOM C"
[#4237] extmk.rb.in patch, environment variable — Ryo HAYASAKA <hayasaka@...>
早坂@会津大学です。
まつもと ゆきひろです
[#4244] %//, %!! — Wakou Aoyama <wakou@...>
青山です。
[#4248] patch for ruby-mswin32 — Koji Oda <oda@...1.qnes.nec.co.jp>
小田@QNES です。
まつもと ゆきひろです
わたなべです.
まつもと ゆきひろです
小田@QNES です。
小田@QNES です。
[#4290] signed/unsigned char — ARIMA Yasuhiro <fit0298@...>
有馬です。
えぐち@エスアンドイー です。
Regard to "[ruby-dev:4292] Re: signed/unsigned char"
えぐち@エスアンドイー です。
笠原です。
Regard to "[ruby-dev:4295] Re: signed/unsigned char"
[#4302] ruby-1.3 MacRuby patch — 藤本尚邦 / Hisakuni FUJIMOTO <hisa@...>
藤本です。こんにちは。
まつもと ゆきひろです
[#4306] MacRuby 1.3 binary test release — 藤本尚邦 / Hisakuni FUJIMOTO <hisa@...>
藤本です。
[#4327] pack("F") for bigendian float — gotoken@... (GOTO Kentaro)
ごとけんです。
ごとけんです
ごとけんです
まつもと ゆきひろです
ごとけんです
山下 純司です。
ごとけんです
まつもと ゆきひろです
ごとけんです
[#4341] cascades on ruby — Kazunori NISHI <kazunori@...>
西@九大です。
ひわだです。
西@九大です。
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
まつもと ゆきひろです
まつもと ゆきひろです
前田です。
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
[#4347] ordered number — "D.Kanda" <MAP2303@...>
[#4349] Re: [ruby-list:11707] Re: ruby 1.2.2 released — EGUCHI Osamu <eguchi@...>
えぐち@エスアンドイー です。
えぐち@エスアンドイー です。
えぐち@エスアンドイー です。
まつもと ゆきひろです
えぐち@エスアンドイー です。
まつもと ゆきひろです
えぐち@エスアンドイー です。
まつもと ゆきひろです
えぐち@エスアンドイー です。
笠原です。
えぐち@エスアンドイー です。
笠原です。
立石です。
えぐち@エスアンドイー です。
[#4419] Re: module Precision — Inaba Hiroto <inaba@...>
ごとけんです
From: gotoken@math.sci.hokudai.ac.jp (GOTO Kentaro)
ごとけんです
まつもと ゆきひろです
ごとけんです
まつもと ゆきひろです
ごとけんです
まつもと ゆきひろです
ごとけんです
[#4420] ruby 1.3.1-990126 — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
えぐち@エスアンドイー です。
[#4442] Forward: ruby 1.3.1-990126 — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
[#4452] permit to put a comma — Koji Arai <JCA02266@...>
新井です。
まつもと ゆきひろです
新井です。
[#4480] option -h — Wakou Aoyama <wakou@...>
青山です。
[#4481] bug? thread — WATANABE Tetsuya <tetsu@...>
渡辺哲也です。
[#4498] cookie on cgi-lib.rb — IKARASHI Akira <ikarashi@...>
五十嵐です。
[#4518] Inf.0 — gotoken@... (GOTO Kentaro)
ごとけんです
[ruby-dev:4511] Re: pack("F") for bigendian float
ごとけんです
In message "[ruby-dev:4371] Re: pack("F") for bigendian float"
on 99/01/26, Yukihiro Matsumoto <matz@netlab.co.jp> writes:
>|> e リトルエンディアンの単精度浮動小数点数(機種依存)
>|> E リトルエンディアンの倍精度浮動小数点数(機種依存)
>|> g ビッグエンディアンの単精度浮動小数点数(機種依存)
>|> G ビッグエンディアンの倍精度浮動小数点数(機種依存)
>|
>|これを実装しました.とりこんでもらえますか??
>
>取り込む方向で検討しましょう.後はdoubleとlongのサイズなどの
>暗黙の前提を明確化して,移植性をあげたら本採用ですね.
既存のテンプレートも含めて short, long, long, double の
大きさに依存しないようにしました.
pack_pack などの本体で ifdef しないようにしたかったため,
特に拡張部分は多少分かりにくいマクロを使ってます.
-- gotoken
diff -u0 ruby-1.3.1-990128/configure.orig ruby-1.3.1-990128/configure
--- ruby-1.3.1-990128/configure.orig Wed Jan 27 16:26:06 1999
+++ ruby-1.3.1-990128/configure Sun Jan 31 00:54:00 1999
@@ -1351,0 +1352,39 @@
+echo $ac_n "checking size of short""... $ac_c" 1>&6
+echo "configure:1314: checking size of short" >&5
+if eval "test \"`echo '$''{'ac_cv_sizeof_short'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ if test "$cross_compiling" = yes; then
+ { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
+else
+ cat > conftest.$ac_ext <<EOF
+#line 1322 "configure"
+#include "confdefs.h"
+#include <stdio.h>
+main()
+{
+ FILE *f=fopen("conftestval", "w");
+ if (!f) exit(1);
+ fprintf(f, "%d\n", sizeof(short));
+ exit(0);
+}
+EOF
+if { (eval echo configure:1333: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+then
+ ac_cv_sizeof_short=`cat conftestval`
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -fr conftest*
+ ac_cv_sizeof_short=0
+fi
+rm -fr conftest*
+fi
+
+fi
+echo "$ac_t""$ac_cv_sizeof_short" 1>&6
+cat >> confdefs.h <<EOF
+#define SIZEOF_SHORT $ac_cv_sizeof_short
+EOF
+
+
diff -u0 ruby-1.3.1-990128/pack.c.orig ruby-1.3.1-990128/pack.c
--- ruby-1.3.1-990128/pack.c.orig Tue Jan 26 19:08:13 1999
+++ ruby-1.3.1-990128/pack.c Sun Jan 31 00:39:17 1999
@@ -16,0 +17,24 @@
+#define define_swapx(x, xtype) \
+static xtype \
+swap##x(z) \
+ xtype z; \
+{ \
+ xtype r; \
+ xtype *zp; \
+ unsigned char *s, *t; \
+ int i; \
+ \
+ zp = (xtype *)malloc(sizeof(xtype));\
+ *zp = z; \
+ s = (char *)zp; \
+ t = (char *)malloc(sizeof(xtype)); \
+ for (i=0 ; i<sizeof(xtype); i++) { \
+ t[sizeof(xtype)-i-1] = s[i]; \
+ } \
+ r = *(xtype *)t; \
+ free(t); \
+ free(zp); \
+ return r; \
+}
+
+#if SIZEOF_SHORT == 2
@@ -17,0 +42,12 @@
+#else
+#if SIZEOF_SHORT == 4
+#define swaps(x) ((((x)&0xFF)<<24) \
+ +(((x)>>24)&0xFF) \
+ +(((x)&0x0000FF00)<<8) \
+ +(((x)&0x00FF0000)>>8) )
+#else
+define_swapx(s,short);
+#endif
+#endif
+
+#if SIZEOF_LONG == 4
@@ -21,0 +58,82 @@
+#else
+#if SIZEOF_LONG == 8
+#define swapl(x) ((((x)&0x00000000000000FF)<<56) \
+ +(((x)&0xFF00000000000000)>>56) \
+ +(((x)&0x000000000000FF00)<<40) \
+ +(((x)&0x00FF000000000000)>>40) \
+ +(((x)&0x0000000000FF0000)<<24) \
+ +(((x)&0x0000FF0000000000)>>24) \
+ +(((x)&0x00000000FF000000)<<8) \
+ +(((x)&0x000000FF00000000)>>8)
+#else
+
+define_swapx(l,long);
+#endif
+#endif
+
+#if SIZEOF_FLOAT == 4
+#if SIZEOF_LONG == 4 /* SIZEOF_FLOAT == 4 == SIZEOF_LONG */
+#define swapf(x) swapl(x)
+#define FLOAT_SWAPPER unsigned long
+#else
+#if SIZEOF_SHORT == 4 /* SIZEOF_FLOAT == 4 == SIZEOF_SHORT */
+#define swapf(x) swaps(x)
+#define FLOAT_SWAPPER unsigned short
+#else /* SIZEOF_FLOAT == 4 but undivide by known size of int */
+#define_swapx(f,float);
+#endif /* #if SIZEOF_SHORT == 4 */
+#endif /* #if SIZEOF_LONG == 4 */
+#else /* SIZEOF_FLOAT != 4 */
+define_swapx(f,float);
+#endif /* #if SIZEOF_FLOAT == 4 */
+
+#if SIZEOF_DOUBLE == 8
+#if SIZEOF_LONG == 8 /* SIZEOF_DOUBLE == 8 == SIZEOF_LONG */
+#define swapd(x) swapl(x)
+#define DOUBLE_SWAPPER unsigned long
+#else
+#if SIZEOF_LONG == 4 /* SIZEOF_DOUBLE == 8 && 4 == SIZEOF_LONG */
+static double
+swapd(d)
+ const double d;
+{
+ double dtmp = d;
+ unsigned long utmp[2];
+ unsigned long utmp0;
+
+ utmp[0] = 0; utmp[1] = 0;
+ memcpy(utmp,&dtmp,sizeof(double));
+ utmp0 = utmp[0];
+ utmp[0] = swapl(utmp[1]);
+ utmp[1] = swapl(utmp0);
+ memcpy(&dtmp,utmp,sizeof(double));
+ return dtmp;
+}
+#else
+#if SIZEOF_SHORT == 4 /* SIZEOF_DOUBLE == 8 && 4 == SIZEOF_SHORT */
+static double
+swapd(d)
+ const double d;
+{
+ double dtmp = d;
+ unsigned short utmp[2];
+ unsigned short utmp0;
+
+ utmp[0] = 0; utmp[1] = 0;
+ memcpy(utmp,&dtmp,sizeof(double));
+ utmp0 = utmp[0];
+ utmp[0] = swaps(utmp[1]);
+ utmp[1] = swaps(utmp0);
+ memcpy(&dtmp,utmp,sizeof(double));
+ return dtmp;
+}
+#else /* SIZEOF_DOUBLE == 8 but undivied by known size of int */
+define_swapx(d, double);
+#endif /* #if SIZEOF_SHORT == 4 */
+#endif /* #if SIZEOF_LONG == 4 */
+#endif /* #if SIZEOF_LONG == 8 */
+#else /* SIZEOF_DOUBLE != 8 */
+define_swapx(d, double);
+#endif /* #if SIZEOF_DPOUBLE == 8 */
+
+#undef define_swapx
@@ -44,0 +163,2 @@
+#define ntohf(x) (endian()?(x):swapf(x))
+#define ntohd(x) (endian()?(x):swapd(x))
@@ -46,0 +167,2 @@
+#define htonf(x) (endian()?(x):swapf(x))
+#define htond(x) (endian()?(x):swapd(x))
@@ -48,0 +171,2 @@
+#define htovf(x) (endian()?swapf(x):(x))
+#define htovd(x) (endian()?swapd(x):(x))
@@ -50,0 +175,2 @@
+#define vtohf(x) (endian()?swapf(x):(x))
+#define vtohd(x) (endian()?swapd(x):(x))
@@ -58,0 +185,4 @@
+#define ntohf(x) (x)
+#define ntohd(x) (x)
+#define htonf(x) (x)
+#define htond(x) (x)
@@ -60,0 +191,2 @@
+#define htovf(x) swapf(x)
+#define htovd(x) swapd(x)
@@ -62,0 +195,2 @@
+#define vtohf(x) swapf(x)
+#define vtohd(x) swapd(x)
@@ -64,0 +199,4 @@
+#undef ntohs
+#undef ntohl
+#undef htons
+#undef htonl
@@ -69,0 +208,4 @@
+#define ntohf(x) swapf(x)
+#define ntohd(x) swapd(x)
+#define htonf(x) swapf(x)
+#define htond(x) swapd(x)
@@ -71,0 +214,2 @@
+#define htovf(x) (x)
+#define htovd(x) (x)
@@ -73,0 +218,2 @@
+#define vtohf(x) (x)
+#define vtohd(x) (x)
@@ -76,0 +223,52 @@
+#ifdef FLOAT_SWAPPER
+#define FLOAT_CONVWITH(y) FLOAT_SWAPPER y;
+#define HTONF(x,y) (memcpy(&y,&x,sizeof(float)), \
+ x = htonf((FLOAT_SWAPPER)y), \
+ memcpy(&x,&y,sizeof(float)), \
+ x)
+#define HTOVF(x,y) (memcpy(&y,&x,sizeof(float)), \
+ y = htovf((FLOAT_SWAPPER)y), \
+ memcpy(&x,&y,sizeof(float)), \
+ x)
+#define NTOHF(x,y) (memcpy(&y,&x,sizeof(float)), \
+ y = ntohf((FLOAT_SWAPPER)y), \
+ memcpy(&x,&y,sizeof(float)), \
+ x)
+#define VTOHF(x,y) (memcpy(&y,&x,sizeof(float)), \
+ y = vtohf((FLOAT_SWAPPER)y), \
+ memcpy(&x,&y,sizeof(float)), \
+ x)
+#else
+#define FLOAT_CONVWITH(y)
+#define HTONF(x,y) htonf(x)
+#define HTOVF(x,y) htovf(x)
+#define NTOHF(x,y) ntohf(x)
+#define VTOHF(x,y) vtohf(x)
+#endif
+
+#ifdef DOUBLE_SWAPPER
+#define DOUBLE_CONVWITH(y) DOUBLE_SWAPPER y;
+#dedine HTOND(x,y) (memcpy(&y,&x,sizeof(double)), \
+ x = htond((DOUBLE_SWAPPER)y), \
+ memcpy(&x,&y,sizeof(double)), \
+ x)
+#dedine HTOVD(x,y) (memcpy(&y,&x,sizeof(double)), \
+ y = htovd((DOUBLE_SWAPPER)y), \
+ memcpy(&x,&y,sizeof(double)), \
+ x)
+#dedine NTOHD(x,y) (memcpy(&y,&x,sizeof(double)), \
+ y = ntohd((DOUBLE_SWAPPER)y), \
+ memcpy(&x,&y,sizeof(double)), \
+ x)
+#dedine VTOHD(x,y) (memcpy(&y,&x,sizeof(double)), \
+ y = vtohd((DOUBLE_SWAPPER)y), \
+ memcpy(&x,&y,sizeof(double)), \
+ x)
+#else
+#define DOUBLE_CONVWITH(y)
+#define HTOND(x,y) htond(x)
+#define HTOVD(x,y) htovd(x)
+#define NTOHD(x,y) ntohd(x)
+#define VTOHD(x,y) vtohd(x)
+#endif
+
@@ -401,0 +600,42 @@
+ case 'e':
+ while (len-- > 0) {
+ float f;
+ FLOAT_CONVWITH(ftmp);
+
+ from = NEXTFROM;
+ switch (TYPE(from)) {
+ case T_FLOAT:
+ f = RFLOAT(from)->value;
+ break;
+ case T_STRING:
+ f = atof(RSTRING(from)->ptr);
+ default:
+ f = (float)NUM2INT(from);
+ break;
+ }
+ f = HTOVF(f,ftmp);
+ rb_str_cat(res, (char*)&f, sizeof(float));
+ }
+ break;
+
+ case 'E':
+ while (len-- > 0) {
+ double d;
+ DOUBLE_CONVWITH(dtmp);
+
+ from = NEXTFROM;
+ switch (TYPE(from)) {
+ case T_FLOAT:
+ d = RFLOAT(from)->value;
+ break;
+ case T_STRING:
+ d = atof(RSTRING(from)->ptr);
+ default:
+ d = (double)NUM2INT(from);
+ break;
+ }
+ d = HTOVD(d,dtmp);
+ rb_str_cat(res, (char*)&d, sizeof(double));
+ }
+ break;
+
@@ -421,0 +662,42 @@
+ case 'g':
+ while (len-- > 0) {
+ float f;
+ FLOAT_CONVWITH(ftmp);
+
+ from = NEXTFROM;
+ switch (TYPE(from)) {
+ case T_FLOAT:
+ f = RFLOAT(from)->value;
+ break;
+ case T_STRING:
+ f = atof(RSTRING(from)->ptr);
+ default:
+ f = (float)NUM2INT(from);
+ break;
+ }
+ f = HTONF(f,ftmp);
+ rb_str_cat(res, (char*)&f, sizeof(float));
+ }
+ break;
+
+ case 'G':
+ while (len-- > 0) {
+ double d;
+ DOUBLE_CONVWITH(dtmp);
+
+ from = NEXTFROM;
+ switch (TYPE(from)) {
+ case T_FLOAT:
+ d = RFLOAT(from)->value;
+ break;
+ case T_STRING:
+ d = atof(RSTRING(from)->ptr);
+ default:
+ d = (double)NUM2INT(from);
+ break;
+ }
+ d = HTOND(d,dtmp);
+ rb_str_cat(res, (char*)&d, sizeof(double));
+ }
+ break;
+
@@ -913,0 +1196,28 @@
+ case 'e':
+ if (len >= (send - s) / sizeof(float))
+ len = (send - s) / sizeof(float);
+ while (len-- > 0) {
+ float tmp;
+ FLOAT_CONVWITH(ftmp);
+
+ memcpy(&tmp, s, sizeof(float));
+ s += sizeof(float);
+ tmp = VTOHF(tmp,ftmp);
+ rb_ary_push(ary, rb_float_new((double)tmp));
+ }
+ break;
+
+ case 'E':
+ if (len >= (send - s) / sizeof(double))
+ len = (send - s) / sizeof(double);
+ while (len-- > 0) {
+ double tmp;
+ DOUBLE_CONVWITH(dtmp);
+
+ memcpy(&tmp, s, sizeof(double));
+ s += sizeof(double);
+ tmp = VTOHD(tmp,dtmp);
+ rb_ary_push(ary, rb_float_new(tmp));
+ }
+ break;
+
@@ -925,0 +1236,28 @@
+ case 'g':
+ if (len >= (send - s) / sizeof(float))
+ len = (send - s) / sizeof(float);
+ while (len-- > 0) {
+ float tmp;
+ FLOAT_CONVWITH(ftmp;)
+
+ memcpy(&tmp, s, sizeof(float));
+ s += sizeof(float);
+ tmp = NTOHF(tmp,ftmp);
+ rb_ary_push(ary, rb_float_new((double)tmp));
+ }
+ break;
+
+ case 'G':
+ if (len >= (send - s) / sizeof(double))
+ len = (send - s) / sizeof(double);
+ while (len-- > 0) {
+ double tmp;
+ DOUBLE_CONVWITH(dtmp);
+
+ memcpy(&tmp, s, sizeof(double));
+ s += sizeof(double);
+ tmp = NTOHD(tmp,dtmp);
+ rb_ary_push(ary, rb_float_new(tmp));
+ }
+ break;
+