diff options
author | Arnold D. Robbins <arnold@skeeve.com> | 2012-07-29 17:03:09 +0300 |
---|---|---|
committer | Arnold D. Robbins <arnold@skeeve.com> | 2012-07-29 17:03:09 +0300 |
commit | 7e649df8a9e0375363a724ce89f78021a4395bf0 (patch) | |
tree | 76daab0109f1917662c9a3d66314441950459afa /extension/readdir.c | |
parent | 7a7aff46c959aa4f2f885fa52b93137e409aa6b9 (diff) | |
download | egawk-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.c | 9 |
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; |