[#24028] --disable-shared --with-static-linked-ext problems — IWATSUKI Hiroyuki <don@...>
岩月と申します。
4 messages
2004/08/06
[#24030] Process.daemon — Tanaka Akira <akr@...17n.org>
Matz 日記にちょっと書いてありますが、Process.daemon というメソッドを提
10 messages
2004/08/07
[#24033] Re: Process.daemon
— Hidetoshi NAGAI <nagai@...>
2004/08/09
永井@知能.九工大です.
[#24038] Re: Process.daemon
— matz@... (Yukihiro Matsumoto)
2004/08/09
まつもと ゆきひろです
[#24032] RDtool標準添付希望 — Minero Aoki <aamine@...>
青木です。
11 messages
2004/08/08
[#24051] k*bsd*-gnu — akira yamada / やまだあきら <akira@...>
configure.inにGNU/k*BSDのサポートを加えてほしいというリクエストを受けました:
7 messages
2004/08/10
[#24060] Zlib::GzipReader#ungetc causes crc error — Tanaka Akira <akr@...17n.org>
次のように、Zlib::GzipReader#ungetc を使うと crc error が起こることがあります。
5 messages
2004/08/11
[#24072] SSLSocket#wait — GOTOU Yuuzou <gotoyuzo@...>
ごとうゆうぞうです。
9 messages
2004/08/13
[#24076] Re: SSLSocket#wait
— Tanaka Akira <akr@...17n.org>
2004/08/14
In article <20040814.051615.28808521.gotoyuzo@sawara.does.notwork.org>,
[#24081] to compile tcltklib (bcc32) — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
山本です。
11 messages
2004/08/15
[#24082] Re: to compile tcltklib (bcc32)
— "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
2004/08/16
山本です。
[#24083] Re: to compile tcltklib (bcc32)
— "U.Nakamura" <usa@...>
2004/08/16
こんにちは、なかむら(う)です。
[#24084] Re: to compile tcltklib (bcc32)
— "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
2004/08/16
山本です。
[#24085] Re: to compile tcltklib (bcc32)
— WATANABE Hirofumi <eban@...>
2004/08/16
わたなべです。
[#24088] duplex I/O for tty — Tanaka Akira <akr@...17n.org>
見つけてしまったので一応報告するのですが、次のように tty と双方向にや
7 messages
2004/08/16
[#24089] Re: duplex I/O for tty
— とみたまさひろ <tommy@...>
2004/08/16
とみたです。
[#24095] Re: duplex I/O for tty
— Tanaka Akira <akr@...17n.org>
2004/08/17
In article <20040816190928.524389c9.tommy@tmtm.org>,
[#24103] core dump with binding, eval, instance_eval and class variable — Tanaka Akira <akr@...17n.org>
次のように、binding, eval, instance_eval, class 変数を使うと、core を
9 messages
2004/08/17
[#24105] Re: core dump with binding, eval, instance_eval and class variable
— nobu@...
2004/08/18
なかだです。
[#24110] Re: core dump with binding, eval, instance_eval and class variable
— Tanaka Akira <akr@...17n.org>
2004/08/18
In article <200408180201.i7I21pgh027007@sharui.nakada.niregi.kanuma.tochigi.jp>,
[#24116] Re: core dump with binding, eval, instance_eval and class variable
— nobu@...
2004/08/18
なかだです。
[#24112] ruby/tk crashes on bcc32 — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
山本です。原因を追求してたのですが、力尽きました。
19 messages
2004/08/18
[#24127] Re: ruby/tk crashes on bcc32
— Hidetoshi NAGAI <nagai@...>
2004/08/19
永井@知能.九工大です.
[#24131] Re: ruby/tk crashes on bcc32
— "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
2004/08/19
山本です。
[#24135] Re: ruby/tk crashes on bcc32
— "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
2004/08/19
山本です。試行錯誤の結果、これで落ちなくなりました。
[#24138] Re: ruby/tk crashes on bcc32
— nobu@...
2004/08/20
なかだです。
[#24139] Re: ruby/tk crashes on bcc32
— "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
2004/08/20
山本です。
[#24149] Re: ruby/tk crashes on bcc32
— nobu@...
2004/08/20
なかだです。
[#24150] Re: ruby/tk crashes on bcc32
— "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
2004/08/21
山本です。
[#24151] Re: ruby/tk crashes on bcc32
— "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
2004/08/21
山本です。
[#24152] Re: ruby/tk crashes on bcc32
— "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
2004/08/21
山本です。
[#24175] Re: ruby/tk crashes on bcc32
— "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
2004/08/25
山本です。
[#24176] Re: ruby/tk crashes on bcc32
— 小西 弘将 <konishih@...6.so-net.ne.jp>
2004/08/25
小西です。
[#24140] CGI::Session has security problem? — Takahiro Kambe <taca@...>
こんにちは。
6 messages
2004/08/20
[#24142] Re: CGI::Session has security problem?
— matz@... (Yukihiro Matsumoto)
2004/08/20
[#24143] ヒアドキュメント形式の外部コマンド実行時の不具合(mswin版)? — OKADOME Junichi <tome@...>
まつもとさん、みなさん、はじめまして。
6 messages
2004/08/20
[#24156] CGI::Session::FileStore should not use Dir::tmpdir — Shugo Maeda <shugo@...>
前田です。
11 messages
2004/08/24
[#24157] Re: CGI::Session::FileStore should not use Dir::tmpdir
— Shugo Maeda <shugo@...>
2004/08/24
前田です。
[#24160] Re: CGI::Session::FileStore should not use Dir::tmpdir
— matz@... (Yukihiro Matsumoto)
2004/08/24
まつもと ゆきひろです
[#24163] Re: CGI::Session::FileStore should not use Dir::tmpdir
— Shugo Maeda <shugo@...>
2004/08/24
前田です。
[#24164] Re: CGI::Session::FileStore should not use Dir::tmpdir
— matz@... (Yukihiro Matsumoto)
2004/08/24
まつもと ゆきひろです
[ruby-dev:24078] Re: Zlib::GzipReader#readpartial
From:
Tanaka Akira <akr@...17n.org>
Date:
2004-08-14 12:56:20 UTC
List:
ruby-dev #24078
In article <873c2rqsrw.fsf@serein.a02.aist.go.jp>,
Tanaka Akira <akr@m17n.org> writes:
> というわけで、その次は Zlib::GzipReader#readpartial を次のように追加す
> るのはどうでしょうか。
>
> [ruby-dev:24066] のパッチを当てた後に当てるパッチです。
うぅむ。一ヶ所 volatile が必要でした。
--- ext/zlib/zlib.c-calc_crc 2004-08-12 18:23:28.000000000 +0900
+++ ext/zlib/zlib.c 2004-08-14 02:57:51.000000000 +0900
@@ -107,6 +107,8 @@
static void gzfile_reset _((struct gzfile*));
static void gzfile_close _((struct gzfile*, int));
static void gzfile_write_raw _((struct gzfile*));
+static VALUE gzfile_read_raw_partial _((VALUE));
+static VALUE gzfile_read_raw_rescue _((VALUE));
static VALUE gzfile_read_raw _((struct gzfile*));
static int gzfile_read_raw_ensure _((struct gzfile*, int));
static char *gzfile_read_raw_until_zero _((struct gzfile*, long));
@@ -1664,7 +1666,7 @@
#define OS_CODE OS_UNIX
#endif
-static ID id_write, id_read, id_flush, id_seek, id_close;
+static ID id_write, id_read, id_readpartial, id_flush, id_seek, id_close;
static VALUE cGzError, cNoFooter, cCRCError, cLengthError;
@@ -1787,18 +1789,41 @@
}
static VALUE
-gzfile_read_raw(gz)
- struct gzfile *gz;
+gzfile_read_raw_partial(arg)
+ VALUE arg;
{
+ struct gzfile *gz = (struct gzfile *)arg;
VALUE str;
- str = rb_funcall(gz->io, id_read, 1, INT2FIX(GZFILE_READ_SIZE));
- if (!NIL_P(str)) {
- Check_Type(str, T_STRING);
+ str = rb_funcall(gz->io, id_readpartial, 1, INT2FIX(GZFILE_READ_SIZE));
+ Check_Type(str, T_STRING);
+ return str;
+}
+
+static VALUE
+gzfile_read_raw_rescue(arg)
+ VALUE arg;
+{
+ struct gzfile *gz = (struct gzfile *)arg;
+ VALUE str = Qnil;
+ if (rb_obj_is_kind_of(ruby_errinfo, rb_eNoMethodError)) {
+ str = rb_funcall(gz->io, id_read, 1, INT2FIX(GZFILE_READ_SIZE));
+ if (!NIL_P(str)) {
+ Check_Type(str, T_STRING);
+ }
}
return str;
}
+static VALUE
+gzfile_read_raw(gz)
+ struct gzfile *gz;
+{
+ return rb_rescue2(gzfile_read_raw_partial, (VALUE)gz,
+ gzfile_read_raw_rescue, (VALUE)gz,
+ rb_eEOFError, rb_eNoMethodError, (VALUE)0);
+}
+
static int
gzfile_read_raw_ensure(gz, size)
struct gzfile *gz;
@@ -2050,7 +2075,7 @@
gzfile_read_more(gz)
struct gzfile *gz;
{
- VALUE str;
+ volatile VALUE str;
while (!ZSTREAM_IS_FINISHED(&gz->z)) {
str = gzfile_read_raw(gz);
@@ -2113,6 +2138,54 @@
}
static VALUE
+gzfile_readpartial(gz, len, outbuf)
+ struct gzfile *gz;
+ int len;
+ VALUE outbuf;
+{
+ VALUE dst;
+
+ if (len < 0)
+ rb_raise(rb_eArgError, "negative length %d given", len);
+
+ if (!NIL_P(outbuf))
+ OBJ_TAINT(outbuf);
+
+ if (len == 0) {
+ if (NIL_P(outbuf))
+ return rb_str_new(0, 0);
+ else {
+ rb_str_resize(outbuf, 0);
+ return outbuf;
+ }
+ }
+ while (!ZSTREAM_IS_FINISHED(&gz->z) && gz->z.buf_filled == 0) {
+ gzfile_read_more(gz);
+ }
+ if (GZFILE_IS_FINISHED(gz)) {
+ if (!(gz->z.flags & GZFILE_FLAG_FOOTER_FINISHED)) {
+ gzfile_check_footer(gz);
+ }
+ if (!NIL_P(outbuf))
+ rb_str_resize(outbuf, 0);
+ rb_raise(rb_eEOFError, "End of file reached");
+ }
+
+ dst = zstream_shift_buffer(&gz->z, len);
+ gzfile_calc_crc(gz, dst);
+
+ if (NIL_P(outbuf)) {
+ OBJ_TAINT(dst); /* for safe */
+ return dst;
+ }
+ else {
+ rb_str_resize(outbuf, RSTRING(dst)->len);
+ memcpy(RSTRING(outbuf)->ptr, RSTRING(dst)->ptr, RSTRING(dst)->len);
+ return outbuf;
+ }
+}
+
+static VALUE
gzfile_read_all(gz)
struct gzfile *gz;
{
@@ -2940,6 +3013,30 @@
* See Zlib::GzipReader documentation for a description.
*/
static VALUE
+rb_gzreader_readpartial(argc, argv, obj)
+ int argc;
+ VALUE *argv;
+ VALUE obj;
+{
+ struct gzfile *gz = get_gzfile(obj);
+ VALUE vlen, outbuf;
+ int len;
+
+ rb_scan_args(argc, argv, "11", &vlen, &outbuf);
+
+ len = NUM2INT(vlen);
+ if (len < 0) {
+ rb_raise(rb_eArgError, "negative length %d given", len);
+ }
+ if (!NIL_P(outbuf))
+ Check_Type(outbuf, T_STRING);
+ return gzfile_readpartial(gz, len, outbuf);
+}
+
+/*
+ * See Zlib::GzipReader documentation for a description.
+ */
+static VALUE
rb_gzreader_getc(obj)
VALUE obj;
{
@@ -3340,6 +3437,7 @@
#if GZIP_SUPPORT
id_write = rb_intern("write");
id_read = rb_intern("read");
+ id_readpartial = rb_intern("readpartial");
id_flush = rb_intern("flush");
id_seek = rb_intern("seek");
id_close = rb_intern("close");
@@ -3398,6 +3496,7 @@
rb_define_method(cGzipReader, "rewind", rb_gzreader_rewind, 0);
rb_define_method(cGzipReader, "unused", rb_gzreader_unused, 0);
rb_define_method(cGzipReader, "read", rb_gzreader_read, -1);
+ rb_define_method(cGzipReader, "readpartial", rb_gzreader_readpartial, -1);
rb_define_method(cGzipReader, "getc", rb_gzreader_getc, 0);
rb_define_method(cGzipReader, "readchar", rb_gzreader_readchar, 0);
rb_define_method(cGzipReader, "each_byte", rb_gzreader_each_byte, 0);
--
[田中 哲][たなか あきら][Tanaka Akira]