[#13765] GenerativeHash — TAKAHASHI Masayoshi <maki@...>

高橋征義です。

17 messages 2001/07/08
[#13769] Re: GenerativeHash — matz@... (Yukihiro Matsumoto) 2001/07/09

まつもと ゆきひろです

[#13774] mkmf.rb: cleaning facility — Takaaki Tateishi <ttate@...>

立石です.

14 messages 2001/07/09

[#13800] Re: [ruby-cvs] ruby: * ruby.h: fix a wrong function name: rb_iglob() -> rb_globi(). — nobu.nakada@...

なかだです。

20 messages 2001/07/10
[#13801] Re: [ruby-cvs] ruby: * ruby.h: fix a wrong function name: rb_iglob() -> rb_globi(). — WATANABE Hirofumi <eban@...> 2001/07/10

わたなべです。

[#13802] Re: [ruby-cvs] ruby: * ruby.h: fix a wrong function name: rb_iglob() -> rb_globi(). — matz@... (Yukihiro Matsumoto) 2001/07/10

まつもと ゆきひろです

[#13804] Re: [ruby-cvs] ruby: * ruby.h: fix a wrong function name: rb_iglob() -> rb_globi(). — WATANABE Hirofumi <eban@...> 2001/07/10

わたなべです。

[#13805] Re: [ruby-cvs] ruby: * ruby.h: fix a wrong function name: rb_iglob() -> rb_globi(). — matz@... (Yukihiro Matsumoto) 2001/07/10

まつもと ゆきひろです

[#13806] Re: [ruby-cvs] ruby: * ruby.h: fix a wrong function name: rb_iglob() -> rb_globi(). — WATANABE Hirofumi <eban@...> 2001/07/10

わたなべです。

[#13807] Re: [ruby-cvs] ruby: * ruby.h: fix a wrong function name: rb_iglob() -> rb_globi(). — matz@... (Yukihiro Matsumoto) 2001/07/10

まつもと ゆきひろです

[#13808] Re: [ruby-cvs] ruby: * ruby.h: fix a wrong function name: rb_iglob() -> rb_globi(). — "Akinori MUSHA" <knu@...> 2001/07/10

At Tue, 10 Jul 2001 15:23:04 +0900,

[#13809] Re: [ruby-cvs] ruby: * ruby.h: fix a wrong function name: rb_iglob() -> rb_globi(). — WATANABE Hirofumi <eban@...> 2001/07/10

わたなべです。

[#13810] Re: [ruby-cvs] ruby: * ruby.h: fix a wrong function name: rb_iglob() -> rb_globi(). — "Akinori MUSHA" <knu@...> 2001/07/10

At Tue, 10 Jul 2001 16:50:52 +0900,

[#13811] Re: [ruby-cvs] ruby: * ruby.h: fix a wrong function name: rb_iglob() -> rb_globi(). — "Akinori MUSHA" <knu@...> 2001/07/10

 もうひとつあった。

[#13828] supported platforms / K&R — "Akinori MUSHA" <knu@...>

 digest モジュールの各プラットフォームでの動作確認をお願いした

39 messages 2001/07/13
[#14389] Re: supported platforms / K&R — Koji Arai <JCA02266@...> 2001/08/08

新井です。

[#14399] Re: supported platforms / K&R — Takashi Shimizu <simtak@...> 2001/08/09

清水@biglobeです。

[#14404] Re: supported platforms / K&R — Koji Arai <JCA02266@...> 2001/08/09

新井です。

[#14461] Re: supported platforms / K&R — Takashi Shimizu <simtak@...> 2001/08/14

清水@biglobe です。

[#14466] Re: supported platforms / K&R — nobu.nakada@... 2001/08/14

なかだです。

[#14468] Re: supported platforms / K&R — Koji Arai <JCA02266@...> 2001/08/14

新井です。

[#14477] recursive malloc (Re: supported platforms / K&R) — Koji Arai <JCA02266@...> 2001/08/15

新井です。

[#14482] Re: recursive malloc (Re: supported platforms / K&R) — nobu.nakada@... 2001/08/15

なかだです。

[#14486] Re: recursive malloc (Re: supported platforms / K&R) — Koji Arai <JCA02266@...> 2001/08/15

新井です。

[#14490] Re: recursive malloc (Re: supported platforms/ K&R) — nobu.nakada@... 2001/08/15

なかだです。

[#14492] Re: recursive malloc (Re: supported platforms/ K&R) — Koji Arai <JCA02266@...> 2001/08/15

新井です。

[#14493] Re: recursive malloc (Re: supportedplatforms/ K&R) — nobu.nakada@... 2001/08/15

なかだです。

[#13878] Prototype for rb_gc_mark / volatile in ruby.h — Tietew <tietew@...>

Tietew です。

18 messages 2001/07/15
[#13880] Re: Prototype for rb_gc_mark / volatile in ruby.h — matz@... (Yukihiro Matsumoto) 2001/07/16

まつもと ゆきひろです

[#13940] IO#read — "Akinori MUSHA" <knu@...>

 IO#read を使って何度もストリームから読み込むような処理をする

20 messages 2001/07/19

[#13959] Re: [ruby-list:30682] Re: overwride method — "Akinori MUSHA" <knu@...>

At Fri, 20 Jul 2001 21:09:36 +0900,

95 messages 2001/07/20
[#13963] Re: [ruby-list:30682] Re: overwride method — GOTO Kentaro <gotoken@...> 2001/07/20

ごとけんです

[#13965] Re: [ruby-list:30682] Re: overwride method — matz@... (Yukihiro Matsumoto) 2001/07/21

まつもと ゆきひろです

[#13967] Re: [ruby-list:30682] Re: overwride method — GOTO Kentaro <gotoken@...> 2001/07/21

ごとけんです

[#13969] Re: [ruby-list:30682] Re: overwride method — matz@... (Yukihiro Matsumoto) 2001/07/21

まつもと ゆきひろです

[#13980] Re: [ruby-list:30682] Re: overwride method — GOTO Kentaro <gotoken@...> 2001/07/21

[ruby-dev:13969]>

[#13981] Re: [ruby-list:30682] Re: overwride method — matz@... (Yukihiro Matsumoto) 2001/07/21

まつもと ゆきひろです

[#13984] Re: [ruby-list:30682] Re: overwride method — GOTO Kentaro <gotoken@...> 2001/07/22

ごとけんです

[#13993] Re: [ruby-list:30682] Re: overwride method — "NAKAMURA, Hiroshi" <nakahiro@...> 2001/07/23

なひです。

[#13994] Re: [ruby-list:30682] Re: overwride method — matz@... (Yukihiro Matsumoto) 2001/07/23

まつもと ゆきひろです

[#13995] Re: [ruby-list:30682] Re: overwride method — keiju@... (石塚圭樹) 2001/07/23

けいじゅ@日本ラショナルソフトウェアです.

[#13996] Re: [ruby-list:30682] Re: overwride method — matz@... (Yukihiro Matsumoto) 2001/07/23

まつもと ゆきひろです

[#13997] Re: [ruby-list:30682] Re: overwride method — keiju@... (石塚圭樹) 2001/07/23

けいじゅ@日本ラショナルソフトウェアです.

[#13998] Re: [ruby-list:30682] Re: overwride method — matz@... (Yukihiro Matsumoto) 2001/07/23

まつもと ゆきひろです

[#14000] Re: [ruby-list:30682] Re: overwride method — "NAKAMURA, Hiroshi" <nakahiro@...> 2001/07/23

なひです。

[#14005] Re: [ruby-list:30682] Re: overwride method — matz@... (Yukihiro Matsumoto) 2001/07/23

まつもと ゆきひろです

[#14016] Re: [ruby-list:30682] Re: overwride method — "NAKAMURA, Hiroshi" <nakahiro@...> 2001/07/24

なひです。

[#14021] Re: [ruby-list:30682] Re: overwride method — matz@... (Yukihiro Matsumoto) 2001/07/24

まつもと ゆきひろです

[#14022] Re: [ruby-list:30682] Re: overwride method — "NAKAMURA, Hiroshi" <nakahiro@...> 2001/07/24

なひです。

[#14023] Re: [ruby-list:30682] Re: overwride method — matz@... (Yukihiro Matsumoto) 2001/07/24

まつもと ゆきひろです

[#14037] Re: [ruby-list:30682] Re: overwride method — GOTO Kentaro <gotoken@...> 2001/07/24

ごとけんです

[#14039] Re: [ruby-list:30682] Re: overwride method — Masatoshi SEKI <m_seki@...> 2001/07/24

[#14040] Re: [ruby-list:30682] Re: overwride method — matz@... (Yukihiro Matsumoto) 2001/07/24

まつもと ゆきひろです

[#14043] Re: [ruby-list:30682] Re: overwride method — m_seki@... 2001/07/24

[#14053] Re: [ruby-list:30682] Re: overwride method — matz@... (Yukihiro Matsumoto) 2001/07/25

まつもと ゆきひろです

[#14082] private instance variable と _dump/_load — Masatoshi SEKI <m_seki@...> 2001/07/25

[#14084] Re: private instance variable と _dump/_load — keiju@... (石塚圭樹) 2001/07/25

けいじゅ@日本ラショナルソフトウェアです.

[#14087] Re: private instance variable と _dump/_load — matz@... (Yukihiro Matsumoto) 2001/07/25

まつもと ゆきひろです

[#14089] Re: private instance variable と _dump/_load — keiju@... (石塚圭樹) 2001/07/25

けいじゅ@日本ラショナルソフトウェアです.

[#14094] Re: private instance variable と _dump/_load — matz@... (Yukihiro Matsumoto) 2001/07/26

まつもと ゆきひろです

[#14133] Re: private instance variable と _dump/_load — "Shin'ya Adzumi" <adzumi@...> 2001/07/27

あづみです。

[#14134] Re: private instance variable と _dump/_load — matz@... (Yukihiro Matsumoto) 2001/07/27

まつもと ゆきひろです

[#14140] Re: private instance variable と _dump/_load — Kazuhiro NISHIYAMA <zn@...> 2001/07/27

In <996211878.306635.31396.nullmailer@ev.netlab.jp>

[#14143] Re: private instance variable と _dump/_load — matz@... (Yukihiro Matsumoto) 2001/07/27

まつもと ゆきひろです

[#14144] Re: private instance variable と _dump/_load — Kazuhiro NISHIYAMA <zn@...> 2001/07/27

In <996255758.830993.629.nullmailer@ev.netlab.jp>

[#14066] Re: [ruby-list:30682] Re: overwride method — "Shin'ya Adzumi" <adzumi@...> 2001/07/25

あづみです。

[#14068] private instance variable (Re: Re: overwride method) — matz@... (Yukihiro Matsumoto) 2001/07/25

まつもと ゆきひろです

[#14099] Is private instance variable really needed? — Shugo Maeda <shugo@...> 2001/07/26

前田です。

[#14104] Re: Is private instance variable really needed? — matz@... (Yukihiro Matsumoto) 2001/07/26

まつもと ゆきひろです

[#14026] Exception in coerce — Shin-ichiro HARA <sinara@...>

原です。

21 messages 2001/07/24
[#14027] Re: Exception in coerce — matz@... (Yukihiro Matsumoto) 2001/07/24

まつもと ゆきひろです

[#14028] Re: Exception in coerce — Shin-ichiro HARA <sinara@...> 2001/07/24

原です。

[#14029] Re: Exception in coerce — matz@... (Yukihiro Matsumoto) 2001/07/24

まつもと ゆきひろです

[#14030] Re: Exception in coerce — matz@... (Yukihiro Matsumoto) 2001/07/24

まつもと ゆきひろです

[#14031] Re: Exception in coerce — Shin-ichiro HARA <sinara@...> 2001/07/24

原です。

[#14032] Re: Exception in coerce — matz@... (Yukihiro Matsumoto) 2001/07/24

まつもと ゆきひろです

[ruby-dev:13906] Re: library search path

From: nobu.nakada@...
Date: 2001-07-16 18:04:51 UTC
List: ruby-dev #13906
なかだです。

At Tue, 26 Jun 2001 17:16:23 +0900,
matz@zetabits.com (Yukihiro Matsumoto) wrote:
>   * 検索時に$arch-$osを付加して検索[ruby-ext:01796]

  これのパッチです。require "foo"を検索する順序は、$LOAD_PATHの
各ディレクトリ$dirに対して次のようになります。

$dir/$arch-$os/foo.rb
$dir/foo.rb
$dir/$arch-$os/foo.so
$dir/foo.so


Index: configure.in
===================================================================
RCS file: /cvs/ruby/src/ruby/configure.in,v
retrieving revision 1.92
diff -u -2 -p -r1.92 configure.in
--- configure.in	2001/06/11 05:31:17	1.92
+++ configure.in	2001/07/16 16:36:04
@@ -1052,7 +1052,9 @@ configure_args=$ac_configure_args
 AC_SUBST(configure_args)dnl
 
+RUBY_LOAD_ARCH=""
 if test "$fat_binary" = yes ; then
     arch="fat-${target_os}"
 
+    RUBY_LOAD_ARCH="${RUBY_LOAD_ARCH}__ARCHITECTURE__\"-${target_os}\", "
     AC_DEFINE_UNQUOTED(RUBY_THIN_ARCHLIB,
                  "${RUBY_LIB_PATH}/" __ARCHITECTURE__ "-${target_os}")
@@ -1066,6 +1068,15 @@ else
 fi
 
+RUBY_LOAD_ARCH="${RUBY_LOAD_ARCH}\"${arch}\", "
+case ${target_cpu} in
+  i*86)
+    RUBY_LOAD_ARCH="${RUBY_LOAD_ARCH}\"i386-${target_os}\", "
+    ;;
+esac
+
 AC_DEFINE_UNQUOTED(RUBY_ARCHLIB, "${RUBY_LIB_PATH}/${arch}")
 AC_DEFINE_UNQUOTED(RUBY_SITE_ARCHLIB, "${RUBY_SITE_LIB_PATH2}/${arch}")
+RUBY_LOAD_ARCH="${RUBY_LOAD_ARCH}\"\""
+AC_DEFINE_UNQUOTED(RUBY_LOAD_ARCH, ${RUBY_LOAD_ARCH})
 
 AC_ARG_WITH(search-path,
Index: eval.c
===================================================================
RCS file: /cvs/ruby/src/ruby/eval.c,v
retrieving revision 1.193
diff -u -2 -p -r1.193 eval.c
--- eval.c	2001/07/14 15:17:18	1.193
+++ eval.c	2001/07/16 15:17:24
@@ -5424,4 +5424,12 @@ rb_f_require(obj, fname)
     volatile int safe = ruby_safe_level;
 
+    static const char *const dlext[] = {
+	".rb", DLEXT,
+#ifdef DLEXT2
+	DLEXT2,
+#endif
+	0
+    };
+
     SafeStringValue(fname);
     if (rb_feature_p(RSTRING(fname)->ptr, Qtrue))
@@ -5430,7 +5438,7 @@ rb_f_require(obj, fname)
     if (ext) {
 	if (strcmp(".rb", ext) == 0) {
-	    feature = rb_str_dup(fname);
-	    tmp = rb_find_file(fname);
-	    if (tmp) {
+	    tmp = fname;
+	    if (rb_find_file_ext(&tmp, NULL)) {
+		feature = fname;
 		fname = tmp;
 		goto load_rb;
@@ -5438,41 +5446,28 @@ rb_f_require(obj, fname)
 	}
 	else if (strcmp(".so", ext) == 0 || strcmp(".o", ext) == 0) {
-	    fname = rb_str_new(RSTRING(fname)->ptr, ext-RSTRING(fname)->ptr);
-	    tmp = rb_str_dup(fname);
-	    rb_str_cat2(tmp, DLEXT);
-	    tmp = rb_find_file(tmp);
-	    if (tmp) {
-		feature = fname = tmp;
-		goto load_dyna;
-	    }
-#ifdef DLEXT2
-	    tmp = rb_str_dup(fname);
-	    rb_str_cat2(tmp, DLEXT);
-	    tmp = rb_find_file(tmp);
-	    if (tmp) {
-		feature = fname = tmp;
-		goto load_dyna;
-	    }
-#endif
-	}
-	else if (strcmp(DLEXT, ext) == 0) {
-	    tmp = rb_find_file(fname);
-	    if (tmp) {
-		feature = fname = tmp;
+	    int type;
+	    feature = rb_str_new(RSTRING(fname)->ptr, ext-RSTRING(fname)->ptr);
+	    tmp = feature;
+	    if (type = rb_find_file_ext(&tmp, dlext + 1)) {
+		rb_str_cat2(feature, dlext[type]);
+		fname = tmp;
 		goto load_dyna;
 	    }
 	}
+	else if (strcmp(DLEXT, ext) == 0
 #ifdef DLEXT2
-	else if (strcmp(DLEXT2, ext) == 0) {
-	    tmp = rb_find_file(fname);
-	    if (tmp) {
-		feature = fname = tmp;
+		 || strcmp(DLEXT2, ext) == 0
+#endif
+	    ) {
+	    tmp = fname;
+	    if (rb_find_file_ext(&tmp, NULL)) {
+		feature = fname;
+		fname = tmp;
 		goto load_dyna;
 	    }
 	}
-#endif
     }
     tmp = fname;
-    switch (rb_find_file_noext(&tmp)) {
+    switch (rb_find_file_ext(&tmp, dlext)) {
       case 0:
 	break;
@@ -5485,5 +5480,5 @@ rb_f_require(obj, fname)
       default:
 	feature = fname;
-	fname = rb_find_file(tmp);
+	fname = tmp;
 	goto load_dyna;
     }
Index: file.c
===================================================================
RCS file: /cvs/ruby/src/ruby/file.c,v
retrieving revision 1.60
diff -u -2 -p -r1.60 file.c
--- file.c	2001/07/16 04:22:46	1.60
+++ file.c	2001/07/16 17:35:48
@@ -1510,4 +1510,16 @@ static VALUE separator;
 
 static VALUE
+rb_str_buf_append_path(str, str2)
+    VALUE str, str2;
+{
+    if (!(RSTRING(str)->len && isdirsep(RSTRING(str)->ptr[RSTRING(str)->len - 1])) &&
+	!(RSTRING(str2)->len && isdirsep(RSTRING(str2)->ptr[0]))) {
+	rb_str_buf_cat(str, "/", 1);
+    }
+    if (RSTRING(str2)->len) rb_str_buf_append(str, str2);
+    return str;
+}
+
+static VALUE
 rb_file_s_join(klass, args)
     VALUE klass, args;
@@ -2125,5 +2137,5 @@ is_absolute_path(path)
 # if defined DOSISH
     if (path[0] == '\\') return 1;
-    if (strlen(path) > 2 && path[1] == ':') return 1;
+    if (path[0] && path[1] == ':') return 1;
 # endif
     return 0;
@@ -2217,36 +2229,39 @@ file_load_ok(file)
 
 extern VALUE rb_load_path;
+VALUE rb_load_arch;
 
 int
-rb_find_file_noext(filep)
+rb_find_file_ext(filep, ext)
     VALUE *filep;
+    const char* const* ext;
 {
-    char *path, *e, *found;
-    char *f = RSTRING(*filep)->ptr;
-    VALUE fname;
-    int i, j;
-
-    static char *ext[] = {
-	".rb", DLEXT,
-#ifdef DLEXT2
-	DLEXT2,
-#endif
-	0
-    };
+    VALUE path, fname = *filep;
+    char *f = RSTRING(fname)->ptr;
+    long plen;
+    int i, j, k;
+
+    static const char *const noext[] = {"", 0};
 
+    if (!ext) ext = noext;
+
     if (f[0] == '~') {
-	fname = *filep;
 	fname = rb_file_s_expand_path(1, &fname);
+	f = RSTRING(fname)->ptr;
+    }
+
+    path = rb_str_buf_new(MAXPATHLEN);
+
+    if (is_absolute_path(f) ||
+	(f[0] == '.' && (f[1] == '.' ? !f[2] || isdirsep(f[2]) : !f[1] || isdirsep(f[1])))) {
 	if (rb_safe_level() >= 2 && OBJ_TAINTED(fname)) {
 	    rb_raise(rb_eSecurityError, "loading from unsafe file %s", f);
 	}
-    }
-
-    if (is_absolute_path(f)) {
+	rb_str_buf_append(path, fname);
+	plen = RSTRING(path)->len;
 	for (i=0; ext[i]; i++) {
-	    fname = rb_str_dup(*filep);
-	    rb_str_cat2(fname, ext[i]);
-	    if (file_load_ok(RSTRING(fname)->ptr)) {
-		*filep = fname;
+	    RSTRING(path)->len = plen;
+	    rb_str_buf_cat2(path, ext[i]);
+	    if (file_load_ok(RSTRING(path)->ptr)) {
+		*filep = path;
 		return i+1;
 	    }
@@ -2258,18 +2273,28 @@ rb_find_file_noext(filep)
 
     Check_Type(rb_load_path, T_ARRAY);
+    Check_Type(rb_load_arch, T_ARRAY);
     for (i=0;i<RARRAY(rb_load_path)->len;i++) {
 	VALUE str = RARRAY(rb_load_path)->ptr[i];
 
 	SafeStringValue(str);
-	path = RSTRING(str)->ptr;
+	rb_str_buf_append(path, str);
+	plen = RSTRING(path)->len;
 	for (j=0; ext[j]; j++) {
-	    fname = rb_str_dup(*filep);
-	    rb_str_cat2(fname, ext[j]);
-	    found = dln_find_file(RSTRING(fname)->ptr, path);
-	    if (found && file_load_ok(found)) {
-		*filep = fname;
-		return j+1;
+	    for (k=0; k<RARRAY(rb_load_arch)->len; k++) {
+		VALUE arch = RARRAY(rb_load_arch)->ptr[k];
+		SafeStringValue(arch);
+		if (*RSTRING(arch)->ptr) {
+		    rb_str_buf_append_path(path, arch);
+		}
+		rb_str_buf_append_path(path, fname);
+		if (*ext[j]) rb_str_buf_cat2(path, ext[j]);
+		if (file_load_ok(RSTRING(path)->ptr)) {
+		    *filep = path;
+		    return j+1;
+		}
+		RSTRING(path)->len = plen;
 	    }
 	}
+	RSTRING(path)->len = 0;
     }
     return 0;
@@ -2492,3 +2517,13 @@ Init_File()
     rb_define_method(rb_cStat, "setgid?",  rb_stat_sgid, 0);
     rb_define_method(rb_cStat, "sticky?",  rb_stat_sticky, 0);
+
+    rb_define_readonly_variable("$LOAD_ARCH", &rb_load_arch);
+    rb_load_arch = rb_ary_new();
+    {
+	static const char *const arch[] = {RUBY_LOAD_ARCH, 0};
+	const char *const *p = arch;
+	while (*p) {
+	    rb_ary_push(rb_load_arch, rb_obj_freeze(rb_str_new2(*p++)));
+	}
+    }
 }
Index: intern.h
===================================================================
RCS file: /cvs/ruby/src/ruby/intern.h,v
retrieving revision 1.54
diff -u -2 -p -r1.54 intern.h
--- intern.h	2001/07/14 15:17:18	1.54
+++ intern.h	2001/07/16 14:50:35
@@ -183,5 +183,5 @@ int eaccess _((const char*, int));
 VALUE rb_file_s_expand_path _((int, VALUE *));
 void rb_file_const _((const char*, VALUE));
-int rb_find_file_noext _((VALUE*));
+int rb_find_file_ext _((VALUE*, const char* const*));
 VALUE rb_find_file _((VALUE));
 /* gc.c */
Index: mkconfig.rb
===================================================================
RCS file: /cvs/ruby/src/ruby/mkconfig.rb,v
retrieving revision 1.15
diff -u -2 -p -r1.15 mkconfig.rb
--- mkconfig.rb	2001/05/31 04:40:37	1.15
+++ mkconfig.rb	2001/07/16 14:25:08
@@ -40,5 +40,5 @@ File.foreach "config.status" do |line|
     next if $so_name and /^RUBY_SO_NAME$/ =~  name
     v = "  CONFIG[\"" + name + "\"] = " +
-      val.sub(/^\s*(.*)\s*$/, '"\1"').gsub(/\$\{?(\w+)\}?/) {
+      val.sub(/^\s*(\"?)(.*)\1\s*$/, '"\2"').gsub(/\$\{?(\w+)\}?/) {
       "$(#{$1})"
     } + "\n"


-- 
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
    中田 伸悦

In This Thread