diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2015-08-27 04:01:37 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2015-08-27 04:01:37 +0000 |
commit | 262b10210fd597d467d88bdc0a2f3a1efdb80a53 (patch) | |
tree | fa238ae5c2459498d399425117b84d8a6b93777c /file.c | |
parent | a2da0f7e4295115680491abce9f6dc533db11f8a (diff) | |
download | ruby-262b10210fd597d467d88bdc0a2f3a1efdb80a53.tar.gz |
win32.c: fchmod
* win32/win32.c (fchmod): implement by using
SetFileInformationByHandle.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51704 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'file.c')
-rw-r--r-- | file.c | 14 |
1 files changed, 10 insertions, 4 deletions
@@ -2357,7 +2357,7 @@ rb_file_chmod(VALUE obj, VALUE vmode) { rb_io_t *fptr; int mode; -#ifndef HAVE_FCHMOD +#if !defined HAVE_FCHMOD || !HAVE_FCHMOD VALUE path; #endif @@ -2365,9 +2365,15 @@ rb_file_chmod(VALUE obj, VALUE vmode) GetOpenFile(obj, fptr); #ifdef HAVE_FCHMOD - if (fchmod(fptr->fd, mode) == -1) - rb_sys_fail_path(fptr->pathv); -#else + if (fchmod(fptr->fd, mode) == -1) { + if (HAVE_FCHMOD || errno != ENOSYS) + rb_sys_fail_path(fptr->pathv); + } + else { + if (!HAVE_FCHMOD) return INT2FIX(0); + } +#endif +#if !defined HAVE_FCHMOD || !HAVE_FCHMOD if (NIL_P(fptr->pathv)) return Qnil; path = rb_str_encode_ospath(fptr->pathv); if (chmod(RSTRING_PTR(path), mode) == -1) |