[#26430] compile error of missing/*.c — nobuyoshi nakada <nobuyoshi.nakada@...>
なかだです。
まつもと ゆきひろです
こんにちは、なかむら(う)です。
こんにちは、なかむら(う)です。
[#26443] cvs [diff aborted]: cannot open file .cvsignore for comparing: No such file or directory — Tanaka Akira <akr@...17n.org>
最近、cvs diff に -k option を付けると、エラーになる (ことがある) ので
[#26463] String#each_byte and String#each_char — "NARUSE, Yui" <naruse@...>
成瀬です。
[#26468] $SAFE=1 の open-uri で redirect 時にエラー — Kazuhiko <kazuhiko@...>
かずひこです。
In article <m3zmsylimn.wl%kazuhiko@fdiary.net>,
まつもと ゆきひろです
In article <1120754832.716261.15867.nullmailer@x31.priv.netlab.jp>,
まつもと ゆきひろです
In article <1120762886.189058.18880.nullmailer@x31.priv.netlab.jp>,
まつもと ゆきひろです
In article <1120810939.815280.27104.nullmailer@x31.priv.netlab.jp>,
まつもと ゆきひろです
前田です。
まつもと ゆきひろです
In article <42CF1918.5000603@ruby-lang.org>,
前田です。
In article <42D7C230.7030509@ruby-lang.org>,
In article <42DDBA82.7030307@ruby-lang.org>,
[#26493] can't handle \c\ — KIMURA Koichi <kbk@...>
木村です。
卜部でございます。
木村です。
[#26508] rmdir(2) on windows doesn't set ENOTDIR — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
山本です。
まつもと ゆきひろです
山本です。
山本です。
[#26530] removing static variables in parse.y — nobuyoshi nakada <nobuyoshi.nakada@...>
なかだです。
[#26566] cannot compile io.c on windows — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
山本です。
[#26574] SystemCallError.new("abc") => #<SystemCallError: unknown error - ab> — Tanaka Akira <akr@...17n.org>
次のように、メッセージの最後が切れます。
まつもと ゆきひろです
なかだです。
山本です。
まつもと ゆきひろです
なかだです。
山本です。
なかだです。
山本です。
なかだです。
なかだです。
まつもと ゆきひろです
山本です。
この変更があってからだと思うのですが、リンカが以下のように警告を発するよ
卜部です。自己レス
At Sat, 30 Jul 2005 02:32:38 +0900,
[#26594] test_s_open_lock failed on Solaris — Tanaka Akira <akr@...17n.org>
次のように、Solaris で test_s_open_lock が失敗します。
[#26618] Re: [ruby-cvs] ruby/ext/socket, ruby, ruby: * ext/socket/socket.c (ruby_connect): break immediately if a — Tanaka Akira <akr@...17n.org>
In article <20050728015209.0F30DC6734@lithium.ruby-lang.org>,
In article <1122518643.429222.1408.nullmailer@x31.priv.netlab.jp>,
[#26623] Ruby2.0BlockParameterNotation — SASADA Koichi <ko1@...>
ささだです。
まつもと ゆきひろです
[#26628] show information of '--enable-pthread' — Hidetoshi NAGAI <nagai@...>
永井@知能.九工大です.
まつもと ゆきひろです
永井@知能.九工大です.
わたなべです。
こんにちは、なかむら(う)です。
永井@知能.九工大です.
永井@知能.九工大です.
In message <20050731.094203.74726476.nagai@ai.kyutech.ac.jp>
永井@知能.九工大です.
こんにちは、なかむら(う)です。
永井@知能.九工大です.
まつもと ゆきひろです
永井@知能.九工大です.
まつもと ゆきひろです
永井@知能.九工大です.
なかだです。
永井@知能.九工大です.
永井@知能.九工大です.
こんにちは、なかむら(う)です。
永井@知能.九工大です.
こんにちは、なかむら(う)です。
こんにちは、なかむら(う)です。
[#26639] SEGV at zsuper with anonymous rest args. — nobu@...
なかだです。
まつもと ゆきひろです
山本です。
なかだです。
[ruby-dev:26528] Re: rmdir(2) on windows doesn't set ENOTDIR
山本です。
>もうひとつ、[GS]etAttributs は読み取り専用フラグがあると rmdir が
>失敗するための処理だと思うのですが、ディレクトリの削除に失敗したときに
>読み取り専用フラグが復活しないようです。
これは意図された動作である可能性も否めないのですが・・・・
とりあえず、これでコミットしようと思います。unlink の方も、
rmdir に合わせて DeleteFile に置き換えてしまいました。
こちらも、bcc32 ではこれ以外 errno のセットしかしてません。
念のためしばらく時間を置いて、夜にでもコミットします。
* win32/win32.c (rb_w32_mkdir): should set EEXIST (not EACCES)
if file or directory already exists. (bcc32)
* win32/win32.c (rb_w32_rmdir): should set ENOTDIR (not EINVAL)
if it is not directory. (bcc32, win32)
* win32/win32.c (rb_w32_rmdir, rb_w32_unlink): restore
FILE_ATTRIBUTE_READONLY flag on function failure.
Index: win32.c
===================================================================
RCS file: /src/ruby/win32/win32.c,v
retrieving revision 1.156
diff -u -w -b -p -r1.156 win32.c
--- win32.c 8 Jul 2005 10:55:29 -0000 1.156
+++ win32.c 12 Jul 2005 23:44:59 -0000
@@ -152,6 +152,7 @@ static struct {
{ ERROR_NEGATIVE_SEEK, EINVAL },
{ ERROR_SEEK_ON_DEVICE, EACCES },
{ ERROR_DIR_NOT_EMPTY, ENOTEMPTY },
+ { ERROR_DIRECTORY, ENOTDIR },
{ ERROR_NOT_LOCKED, EACCES },
{ ERROR_BAD_PATHNAME, ENOENT },
{ ERROR_MAX_THRDS_REACHED, EAGAIN },
@@ -3623,19 +3624,17 @@ rb_w32_isatty(int fd)
}
#endif
-#undef mkdir
-#undef rmdir
int
rb_w32_mkdir(const char *path, int mode)
{
int ret = -1;
RUBY_CRITICAL(do {
- if (mkdir(path) == -1)
+ if (CreateDirectory(path, NULL) == FALSE) {
+ errno = map_errno(GetLastError());
break;
+ }
if (chmod(path, mode) == -1) {
- int save_errno = errno;
- rmdir(path);
- errno = save_errno;
+ RemoveDirectory(path);
break;
}
ret = 0;
@@ -3646,38 +3645,39 @@ rb_w32_mkdir(const char *path, int mode)
int
rb_w32_rmdir(const char *path)
{
- DWORD attr;
- int ret;
+ int ret = 0;
RUBY_CRITICAL({
- attr = GetFileAttributes(path);
+ const DWORD attr = GetFileAttributes(path);
if (attr != (DWORD)-1 && (attr & FILE_ATTRIBUTE_READONLY)) {
- attr &= ~FILE_ATTRIBUTE_READONLY;
- SetFileAttributes(path, attr);
+ SetFileAttributes(path, attr & ~FILE_ATTRIBUTE_READONLY);
}
- ret = rmdir(path);
- if (ret < 0 && attr != (DWORD)-1) {
+ if (RemoveDirectory(path) == FALSE) {
+ errno = map_errno(GetLastError());
+ ret = -1;
+ if (attr != (DWORD)-1 && (attr & FILE_ATTRIBUTE_READONLY)) {
SetFileAttributes(path, attr);
}
+ }
});
return ret;
}
-#undef unlink
int
rb_w32_unlink(const char *path)
{
- DWORD attr;
- int ret;
+ int ret = 0;
RUBY_CRITICAL({
- attr = GetFileAttributes(path);
+ const DWORD attr = GetFileAttributes(path);
if (attr != (DWORD)-1 && (attr & FILE_ATTRIBUTE_READONLY)) {
- attr &= ~FILE_ATTRIBUTE_READONLY;
- SetFileAttributes(path, attr);
+ SetFileAttributes(path, attr & ~FILE_ATTRIBUTE_READONLY);
}
- ret = unlink(path);
- if (ret < 0 && attr != (DWORD)-1) {
+ if (DeleteFile(path) == FALSE) {
+ errno = map_errno(GetLastError());
+ ret = -1;
+ if (attr != (DWORD)-1 && (attr & FILE_ATTRIBUTE_READONLY)) {
SetFileAttributes(path, attr);
}
+ }
});
return ret;
}