[#34909] Kernel#evalの第2引数 — KURODA Hiraku <hiraku@...>
こんにちは、黒田ひらくと申します。
[#34911] erb still treats $KCODE — "Yusuke ENDOH" <mame@...>
遠藤です。
咳といいます。
まつもと ゆきひろです
永井@知能.九工大です.
[#34923] open() and encodings — "NARUSE, Yui" <naruse@...>
成瀬です。
まつもと ゆきひろです
成瀬です。
まつもと ゆきひろです
こんにちは、なかむら(う)です。
まつもと ゆきひろです
こんにちは、なかむら(う)です。
まつもと ゆきひろです
永井@知能.九工大です.
こんにちは、なかむら(う)です。
In article <4847146F.4020103@airemix.jp>,
永井@知能.九工大です.
成瀬です。
まつもと ゆきひろです
こんにちは、なかむら(う)です。
まつもと ゆきひろです
こんにちは、なかむら(う)です。
まつもと ゆきひろです
[#34938] Ruby1.8.7 で Rails2.0.2 が動かない — okkez <okkez000@...>
okkez です。
[#34979] [Bug:ruby 1.9] cannot open file with big mode value — "U.Nakamura" <usa@...>
こんにちは、なかむら(う)です。
[#34990] [Bug:1.9] Rational("355/113") clear $& — Tanaka Akira <akr@...>
以下のように、Rational("355/113") とすると $& が nil になり
> 以下のように、Rational("355/113") とすると $& が nil になり
ワナベと申します。
[#34997] Re: [ruby-changes:5517] Ruby:r17021 (trunk): * vm_insnhelper.c, vm.c, proc.c (proc_call): allow call method with — SASADA Koichi <ko1@...>
ささだです.
まつもと ゆきひろです
ささだです.
まつもと ゆきひろです
ささだです.
まつもと ゆきひろです
遠藤です。
まつもと ゆきひろです
遠藤です。
まつもと ゆきひろです
遠藤です。
ささだです.
ささだです.
まつもと ゆきひろです
ささだです.
[#35016] リリースプラン:1.9.0-2 — SASADA Koichi <ko1@...>
ささだです.
ささだです.
[#35020] Ruby 1.8.7-p17 has been released — "Akinori MUSHA" <knu@...>
Ruby 1.8.7-p17 をリリースしました。
pegacorn です。
[#35034] Array#shuffle! returns nil ? — okkez <okkez000@...>
okkez です。
[#35044] deadlock detection for 1.9 — "Yusuke ENDOH" <mame@...>
遠藤です。
こんばんは sheepman です。
まつもと ゆきひろです
[#35054] SSE2版 strlen — "NARUSE, Yui" <naruse@...>
成瀬です。
In message <485000F3.2010302@airemix.jp>
[#35056] Wide Finder performance — Yukihiro Matsumoto <matz@...>
まつもと ゆきひろです
ささだです.
[#35074] [Bug:1.9] irb fg — Kazuhiro NISHIYAMA <zn@...>
西山和広です。
[#35108] Re: [ruby-list:44988] Re: 各ブランチの計画 — Urabe Shyouhei <shyouhei@...>
卜部です。
こんにちは、なかむら(う)です。
[#35131] /\p{Hiragana}/s may dump core when sizeof(int) differs from sizeof(long) — "Yusuke ENDOH" <mame@...>
遠藤です。
[#35133] [BUG] class variable — Hidetoshi NAGAI <nagai@...>
永井@知能.九工大です.
ささだです.
まつもと ゆきひろです
ささだです.
まつもと ゆきひろです
[#35141] Etc::Passwd, Etc::Group というクラスは存在しない — okkez <okkez000@...>
okkez です。
[#35148] [Feature:trunk] IO#binmode? — "U.Nakamura" <usa@...>
こんにちは、なかむら(う)です。
[#35152] PATCH for MySQL/Ruby — Nobuyoshi Nakada <nobu@...>
なかだです。
[#35158] Etc.passwd{} のなかでのEtc.getpwnamの呼び出しがループします。 — "Yutaka Kanemoto" <kinpoco@...>
金本と申します。
[#35165] return from proc — SASADA Koichi <ko1@...>
ささだです.
[#35194] IncompatibleEncodingError — Kouhei Sutou <kou@...>
須藤です。
成瀬です。
須藤です。
[#35200] Win32 Unicode console output — Tietew <tietew@...>
Tietew です。
成瀬です。
artonです。
成瀬です。
成瀬です。
こんにちは、なかむら(う)です。
[#35226] [PATCH] freeze required_paths in gem_prelude.rb — "Keita Yamaguchi" <keita.yamaguchi@...>
山口と申します。
遠藤です。
まつもと ゆきひろです
卜部です。
まつもと ゆきひろです
卜部です。
まつもと ゆきひろです
[#35227] [Bug:trunk] Re: [ruby-cvs:24798] Ruby:r17573 (trunk): * parse.y (primary): make functional-style not operator to act — "U.Nakamura" <usa@...>
こんにちは、なかむら(う)です。
まつもと ゆきひろです
こんにちは、なかむら(う)です。
まつもと ゆきひろです
[#35247] Re: [ruby-list:45128] Re: Ruby 1.9.0/1.8.7/1.8.6/1.8.5 new releases (Security Fix) — Urabe Shyouhei <shyouhei@...>
卜部です。-devに振ります。ひょっとしてこんなパッチでSEGVのほうはおさまっ
まつもと ゆきひろです
前田です。
まつもと ゆきひろです
前田です。
卜部です。
[#35272] some insns should be method? — SASADA Koichi <ko1@...>
ささだです.
[#35273] $SAFEの今後 — Urabe Shyouhei <shyouhei@...>
〜これまでのあらすじ〜
まつもと ゆきひろです
卜部です。
まつもと ゆきひろです
卜部です。
まつもと ゆきひろです
前田です。
山口と申します。
[#35274] [Feature:trunk] test-coverage measurement — "Yusuke ENDOH" <mame@...>
遠藤です。
まつもと ゆきひろです
[#35278] [BUG] test_win32ole_event.rb in trunk — Masaki Suketa <masaki.suketa@...>
助田です。
こんにちは、なかむら(う)です。
artonです。
助田です。
artonです
助田です。
[ruby-dev:35111] Re: [ruby-list:44988] Re: 各ブランチの計画
こんにちは、なかむら(う)です。
In message "[ruby-dev:35108] Re: [ruby-list:44988] Re: 各ブランチの計画"
on Jun.16,2008 02:05:14, <shyouhei@ruby-lang.org> wrote:
| 一応、r16730(1.8.7のリリース)までの間に自分が「バックポートすべき」と
| 思ったチェンジセットは一通り当てた状態になりました。どうでしょう?
| しばらく様子をみますので、「あれが入ってない」とか「このプラットフォーム
| で動かない」とかありましたらご連絡ください。
| たぶん1.8.5は次のリリースが最後です。
mswin32で確認してみました。
ビルドおよびテストを通すためには以下のパッチが必要なようです。
mkmf.rbはr11195およびr11196です。
file.cは、パッチあてミスと思われるものを直したんですが、ruby_1_8
HEADを見ながら直したので、r16785を含んでしまっています。
あと、
#define OpenFile rb_io_t
は意図的に入れられたような気もするんですが、これを削っちゃっ
たら他のプラットフォームでまずかったりするんでしょうか?
あるとmswin32ではビルドできなくなるので、必要ならもう一工夫し
ないといけません。
で、この他に2点気付いたことがあります。
(1) lib/test/unitをruby_1_8 HEADと同じにしないと、runnerに
ファイルを指定した場合に動かない
(2) test/test_yaml.rbが2Eとなるが、ruby_1_8 HEADと同じにし
ても直らないので原因がよくわからない(GC関連?)
Index: lib/mkmf.rb
===================================================================
--- lib/mkmf.rb (revision 17351)
+++ lib/mkmf.rb (working copy)
@@ -1483,9 +1483,8 @@ EXPORT_PREFIX = config_string('EXPORT_PR
hdr = []
config_string('COMMON_MACROS') do |s|
- Shellwords.shellwords(s).each do |s|
- /(.*?)(?:=(.*))/ =~ s
- hdr << "#define #$1 #$2"
+ Shellwords.shellwords(s).each do |w|
+ hdr << "#define " + w.split(/=/, 2).join(" ")
end
end
config_string('COMMON_HEADERS') do |s|
Index: file.c
===================================================================
--- file.c (revision 17351)
+++ file.c (working copy)
@@ -20,7 +20,6 @@
#include <sys/cygwin.h>
#endif
-#define OpenFile rb_io_t
#include "ruby.h"
#include "rubyio.h"
#include "rubysig.h"
@@ -2329,18 +2328,6 @@ rb_file_s_umask(argc, argv)
# endif
#endif
-#if defined _WIN32 || defined __CYGWIN__
-#define USE_NTFS 1
-#else
-#define USE_NTFS 0
-#endif
-
-#if USE_NTFS
-#define istrailinggabage(x) ((x) == '.' || (x) == ' ')
-#else
-#define istrailinggabage(x) 0
-#endif
-
#ifdef DOSISH_DRIVE_LETTER
static inline int
has_drive_letter(buf)
@@ -2452,9 +2439,8 @@ rb_path_last_separator(path)
return last;
}
-#define chompdirsep rb_path_end
char *
-rb_path_end(path)
+chompdirsep(path)
const char *path;
{
while (*path) {
@@ -2469,35 +2455,20 @@ rb_path_end(path)
}
return (char *)path;
}
-
-#if USE_NTFS
-static char *
-ntfs_tail(const char *path)
+
+char *
+rb_path_end(path)
+ const char *path;
{
- while (*path && *path != ':') {
- if (istrailinggabage(*path)) {
- const char *last = path++;
- while (istrailinggabage(*path)) path++;
- if (!*path || *path == ':') return (char *)last;
- }
- else if (isdirsep(*path)) {
- const char *last = path++;
- while (isdirsep(*path)) path++;
- if (!*path) return (char *)last;
- if (*path == ':') path++;
- }
- else {
- path = CharNext(path);
- }
- }
- return (char *)path;
+ if (isdirsep(*path)) path++;
+ return chompdirsep(path);
}
-#endif
#if USE_NTFS
static char *
ntfs_tail(const char *path)
{
+ while (*path == '.') path++;
while (*path && *path != ':') {
if (istrailinggabage(*path)) {
const char *last = path++;
@@ -2527,10 +2498,6 @@ ntfs_tail(const char *path)
p = buf + bdiff;\
pend = buf + buflen;\
}\
- rb_str_resize(result, buflen);\
- buf = RSTRING(result)->ptr;\
- p = buf + bdiff;\
- pend = buf + buflen;\
} while (0)
#define BUFINIT() (\
@@ -2769,28 +2736,23 @@ file_expand_path(fname, dname, result)
#if USE_NTFS
*p = '\0';
- if (!strpbrk(b = buf, "*?")) {
+ if ((s = strrdirsep(b = buf)) != 0 && !strpbrk(s, "*?")) {
size_t len;
WIN32_FIND_DATA wfd;
#ifdef __CYGWIN__
- int lnk_added = 0;
+ int lnk_added = 0, is_symlink = 0;
struct stat st;
- char w32buf[MAXPATHLEN], sep = 0;
- p = 0;
+ char w32buf[MAXPATHLEN];
+ p = (char *)s;
if (lstat(buf, &st) == 0 && S_ISLNK(st.st_mode)) {
- p = strrdirsep(buf);
- if (!p) p = skipprefix(buf);
- if (p) {
- sep = *p;
- *p = '\0';
- }
+ is_symlink = 1;
+ *p = '\0';
}
- if (cygwin_conv_to_win32_path(buf, w32buf) == 0) {
+ if (cygwin_conv_to_win32_path((*buf ? buf : "/"), w32buf) == 0) {
b = w32buf;
}
- if (p) *p = sep;
- else p = buf;
- if (b == w32buf) {
+ if (is_symlink && b == w32buf) {
+ *p = '\\';
strlcat(w32buf, p, sizeof(w32buf));
len = strlen(p);
if (len > 4 && strcasecmp(p + len - 4, ".lnk") != 0) {
@@ -2798,24 +2760,30 @@ file_expand_path(fname, dname, result)
strlcat(w32buf, ".lnk", sizeof(w32buf));
}
}
+ *p = '/';
#endif
HANDLE h = FindFirstFile(b, &wfd);
if (h != INVALID_HANDLE_VALUE) {
FindClose(h);
- p = strrdirsep(buf);
len = strlen(wfd.cFileName);
#ifdef __CYGWIN__
if (lnk_added && len > 4 &&
strcasecmp(wfd.cFileName + len - 4, ".lnk") == 0) {
- len -= 4;
+ wfd.cFileName[len -= 4] = '\0';
}
+#else
+ p = (char *)s;
#endif
- if (!p) p = buf;
- buflen = ++p - buf + len;
- rb_str_resize(result, buflen);
+ ++p;
+ BUFCHECK(bdiff + len >= buflen);
memcpy(p, wfd.cFileName, len + 1);
p += len;
}
+#ifdef __CYGWIN__
+ else {
+ p += strlen(p);
+ }
+#endif
}
#endif
@@ -3051,7 +3019,7 @@ rb_file_s_extname(klass, fname)
if (!p)
p = name;
else
- p++;
+ name = ++p;
e = 0;
while (*p) {
@@ -3081,7 +3049,7 @@ rb_file_s_extname(klass, fname)
break;
p = CharNext(p);
}
- if (!e || e+1 == p) /* no dot, or the only dot is first or end? */
+ if (!e || e == name || e+1 == p) /* no dot, or the only dot is first or end? */
return rb_str_new(0, 0);
extname = rb_str_new(e, p - e); /* keep the dot, too! */
OBJ_INFECT(extname, fname);
それでは。
--
U.Nakamura <usa@garbagecollect.jp>