[#12340] CGI#out — Shugo Maeda <shugo@...>
前田です。
[#12354] re: higher-resolution Time for Win32 — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
[#12364] Dir::fnmatch? — "Akinori MUSHA" <knu@...>
[ruby-dev:12229] の、 Dir::fnmatch? の追加には特に問題や反対
まつもと ゆきひろです
[#12385] Re: NaN, Infinity (Bug?) — WATANABE Hirofumi <eban@...>
わたなべです。
[#12387] reducing logical operation — "Nobuyoshi.Nakada" <nobu.nakada@...>
なかだです。
えぐち@エスアンドイー です。
なかだです。
えぐち@エスアンドイー です。
なかだです。
えぐち@エスアンドイー です。
木山です.
[#12404] fork in threads — keiju@... (Keiju ISHITSUKA)
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
なひです。
[#12405] at_exit — keiju@... (Keiju ISHITSUKA)
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
[#12415] — Koji Arai <JCA02266@...>
新井です。
[#12425] bignum % の結果が負数になることがある — Hisayasu Nakao <h-nakao@...>
最近、ruby-1.6.2を使い出したばかりの中尾です。
わたなべです。
In message <4518-Mon12Mar2001145434+0900-eban@os.rim.or.jp>
まつもと ゆきひろです
In message <984469222.234203.1007.nullmailer@ev.netlab.zetabits.com>
なかだです。
In message <200103131446.XAA22520@sharui.nakada.kanuma.tochigi.jp>
まつもと ゆきひろです
In message <984550885.417146.3670.nullmailer@ev.netlab.zetabits.com>
まつもと ゆきひろです
In message <984553493.009507.3747.nullmailer@ev.netlab.zetabits.com>
まつもと ゆきひろです
In message <984579430.080967.5569.nullmailer@ev.netlab.zetabits.com>
まつもと ゆきひろです
[#12483] sort! of empty array — Shin-ichiro HARA <sinara@...>
原です。
まつもと ゆきひろです
なひです。
[#12492] compile error on mswin32 — "U.Nakamura" <usa@...>
こんにちは、なかむら(う)です。
まつもと ゆきひろです
[#12513] SOLIBS — "Akinori MUSHA" <knu@...>
configure.in に以下のような修正を加えたいと思っています。
In message <86itlbdv32.wl@archon.local.idaemons.org>
[#12535] シンボリックリンクを含むパスを渡した時の Dir.glob() の動作 — tachino Nobuhiro <tachino@...>
[#12537] re-initialize ARGF — Masaki Suketa <masaki.suketa@...>
助田です。
[#12541] Thread.kill — Masatoshi SEKI <m_seki@...>
[#12570] compile error on ews48 — Koji Arai <JCA02266@...>
新井です。
[#12578] require 'win32api' — Kazuhiro NISHIYAMA <zn@...>
require 'win32api'のエラーメッセージがわかりにくいと
なかだです。
なかだです。
In <200103211407.XAA03408@sharui.nakada.kanuma.tochigi.jp>
なかだです。
In <200103220905.SAA01745@m3.gw.fujitsu.co.jp>
artonです。
[#12582] finalizer problem — keiju@... (Keiju ISHITSUKA)
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
けいじゅ@日本ラショナルソフトウェアです.
[#12605] extern inline (ruby.h) ruby-1.6.3 — WATANABE Tetsuya <tetsu@...>
渡辺哲也です。
まつもと ゆきひろです
渡辺哲也です。
まつもと ゆきひろです
まつもと ゆきひろです
新井です。
[#12621] Marshal bug still remains — "Akinori MUSHA" <knu@...>
Marshal にまだバグが残っています。最新安定版で:
[#12623] [req] Symbol#intern — keiju@... (Keiju ISHITSUKA)
けいじゅ@日本ラショナルソフトウェアです.
[#12672] segv on Continuation#call on C_ALLOCA system — Koji Arai <JCA02266@...>
新井です。
[#12674] Was: [rubyist:0454] Re: to_str — Kenichi Komiya <kom@...1.accsnet.ne.jp>
まつもと ゆきひろです
まつもと ゆきひろです
まつもと ゆきひろです
なかだです。
なかだです。
新井です。
なかだです。
まつもと ゆきひろです
[#12693] Re: [ruby-cvs] ruby/lib: * ext/extmk.rb.in, lib/mkmf.rb: move C++ rules to the right place. — "Nobuyoshi.Nakada" <nobu.nakada@...>
なかだです。
At Wed, 28 Mar 2001 21:08:14 +0900,
[#12699] cross compile mingw-ruby on cygwin — Koji Arai <JCA02266@...>
新井です。
[ruby-dev:12669] errno on non-blocking flock() by fcntl()
新井です。
fcntl(fd, F_SETLK, &lock)
は、ロック済みの場合うちの48の環境では EACCES を返すので
flock() が false を返さず例外になります。lockf() を使う実装
ではEACCES、EAGAIN をEWOULDBLOCKに直しているのでそれにあわせ
ました。
# glibc のマニュアルを見ると、fcntl() もEAGAINまたはEACCESのようなので
ただ、EWOULDBLOCK は定義されているとは限らないようなので呼び
出し側で EWOULDBLOCK、EAGAIN、EACCES それぞれをtrapするよう
な修正にしてます。
以上、missing/flock.c file.c:rb_file_flock() の修正
さらに、今は使ってない file.c:rb_thread_flock() は
EWOULDBLOCK 等でbreak してましたが、continue なんではないか
なと思います。そして、EINTR が発生するかどうかはわからないの
ですが発生すれば-1 で return しても良いかと思い、case をはず
しました。
そして、error.c の修正は上記とは関係ないのですが、現在のrubyでは
EWOULDBLOCK と EAGAIN が同じ値のシステム
の場合どちらの例外があがるかはrubyの実装依存になります。
これは利用者が困る場合があるのではないかと思い、
同じ値の errno に対してクラスを1つにし、他はそれを代入した
定数にしてみました。
p Errno::EWOULDBLOCK
=> Errno::EAGAIN
となったりするので、エラーメッセージを見た人は混乱するかも知
れませんが。。。
# __BEOS__ のところは一切触れていません。
以上、修正内容に関してご検証願います。
Index: error.c
===================================================================
RCS file: /src/ruby/error.c,v
retrieving revision 1.25
diff -u -p -u -r1.25 error.c
--- error.c 2001/02/19 09:14:58 1.25
+++ error.c 2001/03/25 07:52:43
@@ -485,12 +485,11 @@ set_syserr(i, name)
const char *name;
{
#ifdef __BEOS__
- VALUE *list;
- int ix, offset;
-#endif
+ VALUE *list;
+ int ix, offset;
VALUE error = rb_define_class_under(rb_mErrno, name, rb_eSystemCallError);
rb_define_const(error, "Errno", INT2FIX(i));
-#ifdef __BEOS__
+
if (i == B_ERROR) {
syserr_error = error;
rb_global_variable(&syserr_error);
@@ -508,11 +507,19 @@ set_syserr(i, name)
}
}
#else
- if (i <= sys_nerr) {
- syserr_list[i] = error;
- }
+ if (i <= sys_nerr && syserr_list[i]) {
+ VALUE error = syserr_list[i];
+ rb_define_const(rb_mErrno, name, error);
+ }
+ else {
+ VALUE error = rb_define_class_under(rb_mErrno, name,
+ rb_eSystemCallError);
+ rb_define_const(error, "Errno", INT2FIX(i));
+ if (i <= sys_nerr)
+ syserr_list[i] = error;
+ return error;
+ }
#endif
- return error;
}
static VALUE
Index: file.c
===================================================================
RCS file: /src/ruby/file.c,v
retrieving revision 1.51
diff -u -p -u -r1.51 file.c
--- file.c 2001/03/21 03:51:23 1.51
+++ file.c 2001/03/25 07:52:48
@@ -1584,7 +1584,7 @@ rb_file_truncate(obj, len)
# define LOCK_UN 8
# endif
-#if defined(EWOULDBLOCK) && 0
+#if 0
static int
rb_thread_flock(fd, op, fptr)
int fd, op;
@@ -1596,11 +1596,14 @@ rb_thread_flock(fd, op, fptr)
op |= LOCK_NB;
while (flock(fd, op) < 0) {
switch (errno) {
- case EINTR: /* can be happen? */
+ case EAGAIN:
+ case EACCES:
+#if defined(EWOULDBLOCK) && EWOULDBLOCK != EAGAIN
case EWOULDBLOCK:
+#endif
rb_thread_polling(); /* busy wait */
rb_io_check_closed(fptr);
- break;
+ continue;
default:
return -1;
}
@@ -1629,11 +1632,14 @@ rb_file_flock(obj, operation)
ret = flock(fileno(fptr->f), NUM2INT(operation));
TRAP_END;
if (ret < 0) {
-#ifdef EWOULDBLOCK
- if (errno == EWOULDBLOCK) {
- return Qfalse;
- }
+ switch (errno) {
+ case EAGAIN:
+ case EACCES:
+#if defined(EWOULDBLOCK) && EWOULDBLOCK != EAGAIN
+ case EWOULDBLOCK:
#endif
+ return Qfalse;
+ }
rb_sys_fail(fptr->path);
}
#endif
Index: missing/flock.c
===================================================================
RCS file: /src/ruby/missing/flock.c,v
retrieving revision 1.5
diff -u -p -u -r1.5 flock.c
--- missing/flock.c 2001/02/26 05:29:06 1.5
+++ missing/flock.c 2001/03/25 07:53:08
@@ -94,7 +94,6 @@ flock(fd, operation)
int fd;
int operation;
{
- int i;
switch (operation) {
/* LOCK_SH - get a shared lock */
@@ -103,8 +102,7 @@ flock(fd, operation)
return -1;
/* LOCK_EX - get an exclusive lock */
case LOCK_EX:
- i = lockf (fd, F_LOCK, 0);
- break;
+ return lockf (fd, F_LOCK, 0);
/* LOCK_SH|LOCK_NB - get a non-blocking shared lock */
case LOCK_SH|LOCK_NB:
@@ -112,24 +110,17 @@ flock(fd, operation)
return -1;
/* LOCK_EX|LOCK_NB - get a non-blocking exclusive lock */
case LOCK_EX|LOCK_NB:
- i = lockf (fd, F_TLOCK, 0);
- if (i == -1)
- if ((errno == EAGAIN) || (errno == EACCES))
- errno = EWOULDBLOCK;
- break;
+ return lockf (fd, F_TLOCK, 0);
/* LOCK_UN - unlock */
case LOCK_UN:
- i = lockf (fd, F_ULOCK, 0);
- break;
+ return lockf (fd, F_ULOCK, 0);
/* Default - can't decipher operation */
default:
- i = -1;
errno = EINVAL;
- break;
+ return -1;
}
- return i;
}
#elif !defined NT
int