mirror of
https://github.com/ruby/ruby.git
synced 2025-09-15 16:44:01 +02:00
* dir.c (do_stat, do_lstat, do_opendir): should not warn ENOTDIR.
[ruby-talk:248288] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@12210 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
27d87bb4de
commit
909f0b13b7
3 changed files with 17 additions and 6 deletions
12
dir.c
12
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;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue