aboutsummaryrefslogtreecommitdiffstats
path: root/io.c
diff options
context:
space:
mode:
authorArnold D. Robbins <arnold@skeeve.com>2012-08-08 22:51:53 +0300
committerArnold D. Robbins <arnold@skeeve.com>2012-08-08 22:51:53 +0300
commit49658bfd0ef5d4efccd210c48560c43bf455ee16 (patch)
tree424786ecd8935fa1c7a281076ce70f896bb8ce3a /io.c
parent88e81c931345aa485e55c6d6c7f3ad61dc200fed (diff)
downloadegawk-49658bfd0ef5d4efccd210c48560c43bf455ee16.tar.gz
egawk-49658bfd0ef5d4efccd210c48560c43bf455ee16.tar.bz2
egawk-49658bfd0ef5d4efccd210c48560c43bf455ee16.zip
Move struct stat into IOBUF_PUBLIC.
Diffstat (limited to 'io.c')
-rw-r--r--io.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/io.c b/io.c
index d37c0b32..589abbf4 100644
--- a/io.c
+++ b/io.c
@@ -2734,6 +2734,9 @@ iop_alloc(int fd, const char *name, int errno_val)
iop->valid = false;
iop->errcode = errno_val;
+ if (fd != INVALID_HANDLE)
+ fstat(fd, & iop->public.sbuf);
+
return iop;
}
@@ -2743,10 +2746,9 @@ static IOBUF *
iop_finish(IOBUF *iop)
{
bool isdir = false;
- struct stat sbuf;
if (iop->public.fd != INVALID_HANDLE) {
- if (os_isreadable(iop->public.fd, & isdir))
+ if (os_isreadable(& iop->public, & isdir))
iop->valid = true;
else {
if (isdir)
@@ -2769,9 +2771,8 @@ iop_finish(IOBUF *iop)
if (os_isatty(iop->public.fd))
iop->flag |= IOP_IS_TTY;
- iop->readsize = iop->size = optimal_bufsize(iop->public.fd, & sbuf);
- iop->sbuf = sbuf;
- if (do_lint && S_ISREG(sbuf.st_mode) && sbuf.st_size == 0)
+ iop->readsize = iop->size = optimal_bufsize(iop->public.fd, & iop->public.sbuf);
+ if (do_lint && S_ISREG(iop->public.sbuf.st_mode) && iop->public.sbuf.st_size == 0)
lintwarn(_("data file `%s' is empty"), iop->public.name);
iop->errcode = errno = 0;
iop->count = iop->scanoff = 0;