[#26942] core dump with ripper — Tanaka Akira <akr@...17n.org>
ripper で次のように core を吐くことがあるようです。
[#26952] ripper problems. — Tanaka Akira <akr@...17n.org>
ついでに、
[#26954] Re: core dump with ripper — Yukihiro Matsumoto <matz@...>
まつもと ゆきひろです
[#26962] Re: about Ruby-GetText — Yukihiro Matsumoto <matz@...>
まつもと ゆきひろです
[#26963] sprintf does not warn in verbose mode. — sheepman <sheepman@...>
こんにちは、sheepman です。
[#26975] [proposal] ANSI style function — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
山本です。
まつもと ゆきひろです
山本です。
なかだです。
山本です。
まつもと ゆきひろです
山本です。
山本です。
山本です。
まつもと ゆきひろです
山本です。
山本です。
まつもと ゆきひろです
山本です。
In message <20050909220539.E1B26BB8.ocean@m2.ccsnet.ne.jp>
山本です。
山本です。
まつもと ゆきひろです
山本です。
山本です。
まつもと ゆきひろです
山本です。
まつもと ゆきひろです
山本です。
まつもと ゆきひろです
山本です。
山本です。
山本です。
山本です。
まつもと ゆきひろです
山本です。
山本です。
なかだです。
[#26984] elimination of "extern int errno;" — Takahiro Kambe <taca@...>
こんにちは。
In message <20050908.120716.71112483.taca@back-street.net>
まつもと ゆきひろです
In message <1126489480.743964.31599.nullmailer@x31.priv.netlab.jp>
In message <20050912.104954.92585084.taca@back-street.net>
まつもと ゆきひろです
In article <1126491408.019719.1052.nullmailer@x31.priv.netlab.jp>,
In message <87wtlmyasi.fsf@m17n.org>
In article <20050916.201819.92561710.taca@back-street.net>,
In message <878xxx6tab.fsf@m17n.org>
こんにちは、なかむら(う)です。
まつもと ゆきひろです
高橋征義です。
まつもと ゆきひろです
高橋征義です。
山本です。
永井@知能.九工大です.
山本です。
永井@知能.九工大です.
山本です。
永井@知能.九工大です.
[#27051] fail on test/rss — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
山本です。
なかだです。
まつもと ゆきひろです
まつもと ゆきひろです
まつもと ゆきひろです
[#27123] test/socket/test_tcp.rb blocks on NetBSD — Tanaka Akira <akr@...17n.org>
2005-09-16 から NetBSD で test/socket/test_tcp.rb がブロックするようになっています。
[#27139] ruby-1.8.3 status for release — Masayoshi Takahashi <maki@...>
高橋征義です。
卜部です。
卜部です。
こんにちは、sheepman です。
小西 弘将です。
Masayoshi Takahashi wrote:
助田です。
高橋征義です。
山本です。
こんにちは、なかむら(う)です。
かわじ、です。
山本です。
卜部です。
[#27140] [PATCH] File#chown(nil, nil) — Minero Aoki <aamine@...>
青木です。
[#27141] Interix3 (SFU)サポート — Takahiro Kambe <taca@...>
おはようございます。
[#27150] test_readline.rb blocks on NetBSD. — Tanaka Akira <akr@...17n.org>
NetBSD で、ひさしぶりに端末から ruby を build したところ、test-all 中
前田です。
[#27242] Ruby 1.8.3 released — Yukihiro Matsumoto <matz@...>
Hello Rubyists,
[#27248] glob from command line still broken in djgpp? — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
山本です。
[#27251] 脆弱性レポート翻訳者募集 — Yukihiro Matsumoto <matz@...>
まつもと ゆきひろです
In message <1127268581.886018.27376.nullmailer@x31.priv.netlab.jp>
[#27275] release schedule plan for 1.8.4 — "NARUSE, Yui" <naruse@...>
成瀬です。
[#27281] env -i make; fails. — "URABE Shyouhei aka.mput" <root@...>
うらべです。
なかだです。
In article <TYOMLEM041XvpFVjCRG00000109@tyomlvem02.e2k.ad.ge.com>,
なかだです。
In article <TYOMLEM04ryWtIIZS2T0000010a@tyomlvem02.e2k.ad.ge.com>,
[#27297] warning of yaml/basenode.rb — 雪見酒 <yukimi_sake@...>
こちらでははじめまして、雪見酒です。
[#27302] warning: 'cdecl' attribute directive ignored — Kazuhiro NISHIYAMA <zn@...>
西山和広です。
[#27321] RubyGemsとOS platformとの関係 — Daigo Moriwaki <techml@...>
こんにちは、森脇です。
なかだです。
まつもと ゆきひろです
西尾瑞穂 と言います。
まつもと ゆきひろです
In article <1127872084.608903.6359.nullmailer@x31.priv.netlab.jp>,
まつもと ゆきひろです
森脇です。
Daigo Moriwaki wrote:
In article <433CC31E.20802@ruby-lang.org>,
Tanaka Akira wrote:
まつもと ゆきひろです
In article <433D4CED.9030005@ruby-lang.org>,
Tanaka Akira wrote:
In article <433E4AF0.5020308@ruby-lang.org>,
[#27324] ext/digest on DrafonFly — Takahiro Kambe <taca@...>
こんにちは。
[#27331] possible SEGV in rb_autoload_load? — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
山本です。
[#27334] File#read にゴミがつく — Yusuke ENDOH <mame@...>
はじめまして、遠藤侑介と申します。
なかだです。
[ruby-dev:27105] Dir.glob delimiter
なかだです。
1.9でDir.globのdelimiterで分ける機能が働いてません。
$ ls -d d*
defines.h djgpp dln.h dmydln.c doc
dir.c dln.c dmyconf.c dmyext.c
$ ls *.h
defines.h missing.h regenc.h ruby.h util.h
dln.h node.h regex.h rubyio.h version.h
env.h oniguruma.h regint.h rubysig.h
intern.h re.h regparse.h st.h
$ ruby -v -e 'p Dir["d*\0*.h"]'
ruby 1.9.0 (2005-09-16) [i386-cygwin]
["defines.h", "dir.c", "djgpp", "dln.c", "dln.h", "dmyconf.c",
"dmydln.c", "dmyext.c", "doc", "defines.h", "dir.c", "djgpp",
"dln.c", "dln.h", "dmyconf.c", "dmydln.c", "dmyext.c", "doc"]
また、win32/win32.c:rb_w32_cmdvector()では'{'もglobの対象にしていますが、
rb_glob()(ruby_glob()でも)ではbrace expansionは行っていません。
Index: dir.c
===================================================================
RCS file: /cvs/ruby/src/ruby/dir.c,v
retrieving revision 1.147
diff -U2 -p -r1.147 dir.c
--- dir.c 14 Sep 2005 13:40:43 -0000 1.147
+++ dir.c 16 Sep 2005 05:32:13 -0000
@@ -1111,6 +1111,6 @@ enum answer { YES, NO, UNKNOWN };
struct glob_args {
void (*func)(const char *, VALUE);
- const char *c;
- VALUE v;
+ const char *path;
+ VALUE value;
};
@@ -1120,5 +1120,5 @@ glob_func_caller(VALUE val)
struct glob_args *args = (struct glob_args *)val;
- (*args->func)(args->c, args->v);
+ (*args->func)(args->path, args->value);
return Qnil;
}
@@ -1135,5 +1135,5 @@ glob_helper(
struct glob_pattern **end,
int flags,
- int (*func)(const char *, VALUE),
+ ruby_glob_func *func,
VALUE arg)
{
@@ -1287,5 +1287,5 @@ glob_helper(
static int
-ruby_glob0(const char *path, int flags, int (*func)(const char *, VALUE), VALUE arg)
+ruby_glob0(const char *path, int flags, ruby_glob_func *func, VALUE arg)
{
struct glob_pattern *list;
@@ -1319,5 +1319,5 @@ ruby_glob0(const char *path, int flags,
int
-ruby_glob(const char *path, int flags, int (*func)(const char *, VALUE), VALUE arg)
+ruby_glob(const char *path, int flags, ruby_glob_func *func, VALUE arg)
{
return ruby_glob0(path, flags & ~GLOB_VERBOSE, func, arg);
@@ -1330,5 +1330,5 @@ rb_glob_caller(const char *path, VALUE a
struct glob_args *args = (struct glob_args *)a;
- args->c = path;
+ args->path = path;
rb_protect(glob_func_caller, a, &status);
return status;
@@ -1341,5 +1341,5 @@ rb_glob2(const char *path, int flags, vo
args.func = func;
- args.v = arg;
+ args.value = arg;
if (flags & FNM_CASEFOLD) {
@@ -1351,5 +1351,5 @@ rb_glob2(const char *path, int flags, vo
void
-rb_glob(const char *path, void (*func) (const char *, VALUE), VALUE arg)
+rb_glob(const char *path, void (*func)(const char *, VALUE), VALUE arg)
{
int status = rb_glob2(path, 0, func, arg);
@@ -1363,6 +1363,6 @@ push_pattern(const char *path, VALUE ary
}
-static int
-push_glob(VALUE ary, const char *str, long offset, int flags)
+int
+ruby_brace_expand(const char *str, int flags, ruby_glob_func *func, VALUE arg)
{
const int escape = !(flags & FNM_NOESCAPE);
@@ -1387,9 +1387,7 @@ push_glob(VALUE ary, const char *str, lo
if (lbrace && rbrace) {
- volatile VALUE buffer = rb_str_new(0, strlen(s));
- char *buf;
+ char *buf = ALLOC_N(char, strlen(s) + 1);
long shift;
- buf = RSTRING(buffer)->ptr;
memcpy(buf, s, lbrace-s);
shift = (lbrace-s);
@@ -1408,10 +1406,11 @@ push_glob(VALUE ary, const char *str, lo
memcpy(buf+shift, t, p-t);
strcpy(buf+shift+(p-t), rbrace+1);
- status = push_glob(ary, buf, offset, flags);
+ status = ruby_brace_expand(buf, flags, func, arg);
if (status) break;
}
+ free(buf);
}
else if (!lbrace && !rbrace) {
- status = rb_glob2(s, flags, push_pattern, ary);
+ status = (*func)(s, arg);
}
@@ -1419,4 +1418,45 @@ push_glob(VALUE ary, const char *str, lo
}
+struct brace_args {
+ ruby_glob_func *func;
+ VALUE value;
+ int flags;
+};
+
+static int
+glob_brace(const char *path, VALUE val)
+{
+ struct brace_args *arg = (struct brace_args *)val;
+
+ return ruby_glob0(path, arg->flags, arg->func, arg->value);
+}
+
+static int
+ruby_brace_glob0(const char *str, int flags, ruby_glob_func *func, VALUE arg)
+{
+ struct brace_args args;
+
+ args.func = func;
+ args.value = arg;
+ args.flags = flags;
+ return ruby_brace_expand(str, flags, glob_brace, (VALUE)&args);
+}
+
+int
+ruby_brace_glob(const char *str, int flags, ruby_glob_func *func, VALUE arg)
+{
+ return ruby_brace_glob0(str, flags & ~GLOB_VERBOSE, func, arg);
+}
+
+static int
+push_glob(VALUE ary, const char *str, int flags)
+{
+ struct glob_args args;
+
+ args.func = push_pattern;
+ args.value = ary;
+ return ruby_brace_glob0(str, flags | GLOB_VERBOSE, rb_glob_caller, (VALUE)&args);
+}
+
static VALUE
rb_push_glob(VALUE str, int flags) /* '\0' is delimiter */
@@ -1430,7 +1470,8 @@ rb_push_glob(VALUE str, int flags) /* '\
while (offset < RSTRING(str)->len) {
- int status = push_glob(ary, RSTRING(str)->ptr, offset, flags);
+ int status = push_glob(ary, RSTRING(str)->ptr + offset, flags);
char *p, *pend;
if (status) rb_jump_tag(status);
+ if (offset >= RSTRING(str)->len) break;
p = RSTRING(str)->ptr + offset;
p += strlen(p) + 1;
Index: ruby.h
===================================================================
RCS file: /cvs/ruby/src/ruby/ruby.h,v
retrieving revision 1.122
diff -U2 -p -r1.122 ruby.h
--- ruby.h 14 Sep 2005 13:40:43 -0000 1.122
+++ ruby.h 16 Sep 2005 04:38:33 -0000
@@ -493,6 +493,9 @@ struct RBignum {
void rb_obj_infect(VALUE,VALUE);
+typedef int ruby_glob_func(const char*,VALUE);
void rb_glob(const char*,void(*)(const char*,VALUE),VALUE);
-int ruby_glob(const char*,int,int(*)(const char*,VALUE),VALUE);
+int ruby_glob(const char*,int,ruby_glob_func*,VALUE);
+int ruby_brace_expand(const char*,int,ruby_glob_func*,VALUE);
+int ruby_brace_glob(const char*,int,ruby_glob_func*,VALUE);
VALUE rb_define_class(const char*,VALUE);
Index: win32/win32.c
===================================================================
RCS file: /cvs/ruby/src/ruby/win32/win32.c,v
retrieving revision 1.169
diff -U2 -p -r1.169 win32.c
--- win32/win32.c 15 Sep 2005 02:03:43 -0000 1.169
+++ win32/win32.c 16 Sep 2005 04:58:33 -0000
@@ -1062,5 +1369,5 @@ cmdglob(NtCmdLineElement *patt, NtCmdLin
if (*p == '\\')
*p = '/';
- ruby_glob(buf, 0, insert, (VALUE)&tail);
+ ruby_brace_glob(buf, 0, insert, (VALUE)&tail);
if (buf != buffer)
free(buf);
--
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
中田 伸悦