diff options
-rw-r--r-- | extension/ChangeLog | 5 | ||||
-rw-r--r-- | extension/readdir.c | 4 |
2 files changed, 9 insertions, 0 deletions
diff --git a/extension/ChangeLog b/extension/ChangeLog index 2023a76e..a46e2cef 100644 --- a/extension/ChangeLog +++ b/extension/ChangeLog @@ -1,5 +1,10 @@ 2012-07-27 Andrew J. Schorr <aschorr@telemetry-investments.com> + * readdir.c (dir_get_record): Need to set errno to 0 before calling + readdir, since readdir sets errno only on failure, not on EOF. + +2012-07-27 Andrew J. Schorr <aschorr@telemetry-investments.com> + * readdir.c (dir_get_record): If readdir fails, set errcode. Otherwise, don't bother to set errcode. diff --git a/extension/readdir.c b/extension/readdir.c index f8580568..2818d601 100644 --- a/extension/readdir.c +++ b/extension/readdir.c @@ -139,6 +139,10 @@ dir_get_record(char **out, struct iobuf_public *iobuf, int *errcode) set_RT((awk_value_t *) & null_val); the_dir = (open_directory_t *) iobuf->opaque; dp = the_dir->dp; + /* + * Initialize errno, since readdir does not set it to zero on EOF. + */ + errno = 0; dirent = readdir(dp); if (dirent == NULL) { *errcode = errno; /* in case there was an error */ |