diff options
author | usa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2009-02-06 08:23:00 +0000 |
---|---|---|
committer | usa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2009-02-06 08:23:00 +0000 |
commit | 6343c99a2e43a60ffde0f445c2656f5cef24db0e (patch) | |
tree | 3cdecdd505b348bc2b2824fdb7980f7055f06736 /dir.c | |
parent | 03c7332241e8f85b2a1d87dd88ed2946c9d32060 (diff) |
* win32/{dir.h, win32.c} (rb_w32_readdir_with_enc): new function to
read entry with specified enc.
* win32/win32.c (readdir_internal): extract from rb_w32_opendir().
* win32/win32.c (opendir_internal): extract from rb_w32_readdir().
* dir.c (dir_read, dir_each): use new READDIR macro instead of readdir()
to pass enc for special version of readdir, such as above.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@22087 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'dir.c')
-rw-r--r-- | dir.c | 9 |
1 files changed, 7 insertions, 2 deletions
@@ -474,6 +474,11 @@ dir_path(VALUE dir) * d.read #=> ".." * d.read #=> "config.h" */ +#ifdef _WIN32 +# define READDIR(dir, enc) rb_w32_readdir_with_enc(dir, enc) +#else +# define READDIR(dir, enc) readdir(dir) +#endif static VALUE dir_read(VALUE dir) { @@ -482,7 +487,7 @@ dir_read(VALUE dir) GetDIR(dir, dirp); errno = 0; - dp = readdir(dirp->dir); + dp = READDIR(dirp->dir, dirp->enc); if (dp) { return rb_external_str_new_with_enc(dp->d_name, NAMLEN(dp), dirp->enc); } @@ -521,7 +526,7 @@ dir_each(VALUE dir) RETURN_ENUMERATOR(dir, 0, 0); GetDIR(dir, dirp); rewinddir(dirp->dir); - for (dp = readdir(dirp->dir); dp != NULL; dp = readdir(dirp->dir)) { + for (dp = READDIR(dirp->dir, dirp->enc); dp != NULL; dp = READDIR(dirp->dir, dirp->enc)) { rb_yield(rb_external_str_new_with_enc(dp->d_name, NAMLEN(dp), dirp->enc)); if (dirp->dir == NULL) dir_closed(); } |