diff options
-rw-r--r-- | extension/ChangeLog | 5 | ||||
-rw-r--r-- | extension/readdir.c | 9 |
2 files changed, 12 insertions, 2 deletions
diff --git a/extension/ChangeLog b/extension/ChangeLog index 4279e22d..31a070d8 100644 --- a/extension/ChangeLog +++ b/extension/ChangeLog @@ -1,3 +1,8 @@ +2012-07-29 Arnold D. Robbins <arnold@skeeve.com> + + * readdir.c (dir_take_control_of): Print error message and + set ERRNO if failure. Adjust count of max digits. + 2012-07-27 Andrew J. Schorr <aschorr@telemetry-investments.com> * Makefile.am (*_la_LIBADD): Need to link with $(LIBINTL) for 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; |