summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorshyouhei <shyouhei@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-05-22 19:22:14 +0000
committershyouhei <shyouhei@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-05-22 19:22:14 +0000
commit8d1d9260a23dd21e1c621c20895b209fd5ca867a (patch)
treeaef70a5a027001ca3d66592cc3109936222dca9a
parenteee2a06bbe2c5b8f4a5edfb06ecd1beabb3d3c67 (diff)
merge -c 12210
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8_6@12329 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog5
-rw-r--r--dir.c12
-rw-r--r--version.h2
3 files changed, 15 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog
index 8174f8f460..d175adcbe2 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Wed May 23 04:22:57 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dir.c (do_stat, do_lstat, do_opendir): should not warn ENOTDIR.
+ [ruby-talk:248288]
+
Wed May 23 03:50:35 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
* lib/mkmf.rb (libpathflag): not to append RPATHFLAG to current
diff --git a/dir.c b/dir.c
index 4c63a0936f..0dd12ffd7d 100644
--- a/dir.c
+++ b/dir.c
@@ -958,13 +958,19 @@ sys_warning_1(mesg)
#define GLOB_ALLOC_N(type, n) (type *)malloc(sizeof(type) * (n))
#define GLOB_JUMP_TAG(status) ((status == -1) ? rb_memerror() : rb_jump_tag(status))
+/*
+ * ENOTDIR can be returned by stat(2) if a non-leaf element of the path
+ * is not a directory.
+ */
+#define to_be_ignored(e) ((e) == ENOENT || (e) == ENOTDIR)
+
/* System call with warning */
static int
do_stat(const char *path, struct stat *pst, int flags)
{
int ret = stat(path, pst);
- if (ret < 0 && errno != ENOENT)
+ if (ret < 0 && !to_be_ignored(errno))
sys_warning(path);
return ret;
@@ -974,7 +980,7 @@ static int
do_lstat(const char *path, struct stat *pst, int flags)
{
int ret = lstat(path, pst);
- if (ret < 0 && errno != ENOENT)
+ if (ret < 0 && !to_be_ignored(errno))
sys_warning(path);
return ret;
@@ -984,7 +990,7 @@ static DIR *
do_opendir(const char *path, int flags)
{
DIR *dirp = opendir(path);
- if (dirp == NULL && errno != ENOENT && errno != ENOTDIR)
+ if (dirp == NULL && !to_be_ignored(errno))
sys_warning(path);
return dirp;
diff --git a/version.h b/version.h
index 4708a2673f..6ef0e38382 100644
--- a/version.h
+++ b/version.h
@@ -2,7 +2,7 @@
#define RUBY_RELEASE_DATE "2007-05-23"
#define RUBY_VERSION_CODE 186
#define RUBY_RELEASE_CODE 20070523
-#define RUBY_PATCHLEVEL 18
+#define RUBY_PATCHLEVEL 19
#define RUBY_VERSION_MAJOR 1
#define RUBY_VERSION_MINOR 8