aboutsummaryrefslogtreecommitdiffstats
path: root/extension/readdir.c
diff options
context:
space:
mode:
authorArnold D. Robbins <arnold@skeeve.com>2012-07-29 17:03:09 +0300
committerArnold D. Robbins <arnold@skeeve.com>2012-07-29 17:03:09 +0300
commit7e649df8a9e0375363a724ce89f78021a4395bf0 (patch)
tree76daab0109f1917662c9a3d66314441950459afa /extension/readdir.c
parent7a7aff46c959aa4f2f885fa52b93137e409aa6b9 (diff)
downloadegawk-7e649df8a9e0375363a724ce89f78021a4395bf0.tar.gz
egawk-7e649df8a9e0375363a724ce89f78021a4395bf0.tar.bz2
egawk-7e649df8a9e0375363a724ce89f78021a4395bf0.zip
Improvements in readdir.c.
Diffstat (limited to 'extension/readdir.c')
-rw-r--r--extension/readdir.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/extension/readdir.c b/extension/readdir.c
index 2818d601..99073a2d 100644
--- a/extension/readdir.c
+++ b/extension/readdir.c
@@ -209,6 +209,7 @@ dir_take_control_of(IOBUF_PUBLIC *iobuf)
open_directory_t *the_dir;
size_t size;
+ errno = 0;
#ifdef HAVE_FDOPENDIR
dp = fdopendir(iobuf->fd);
#else
@@ -216,12 +217,16 @@ dir_take_control_of(IOBUF_PUBLIC *iobuf)
if (dp != NULL)
iobuf->fd = dirfd(dp);
#endif
- if (dp == NULL)
+ if (dp == NULL) {
+ warning(ext_id, _("dir_take_control_of: opendir/fdopendir failed: %s"),
+ strerror(errno));
+ update_ERRNO_int(errno);
return 0;
+ }
emalloc(the_dir, open_directory_t *, sizeof(open_directory_t), "dir_take_control_of");
the_dir->dp = dp;
- size = sizeof(struct dirent) + 20 /* max digits in inode */ + 2 /* slashes */;
+ size = sizeof(struct dirent) + 21 /* max digits in inode */ + 2 /* slashes */;
emalloc(the_dir->buf, char *, size, "dir_take_control_of");
iobuf->opaque = the_dir;