diff options
author | Arnold D. Robbins <arnold@skeeve.com> | 2012-08-08 22:51:53 +0300 |
---|---|---|
committer | Arnold D. Robbins <arnold@skeeve.com> | 2012-08-08 22:51:53 +0300 |
commit | 49658bfd0ef5d4efccd210c48560c43bf455ee16 (patch) | |
tree | 424786ecd8935fa1c7a281076ce70f896bb8ce3a /io.c | |
parent | 88e81c931345aa485e55c6d6c7f3ad61dc200fed (diff) | |
download | egawk-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.c | 11 |
1 files changed, 6 insertions, 5 deletions
@@ -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; |