From: Kirk McKusick Date: Wed, 7 Mar 1990 15:28:13 +0000 (-0800) Subject: readdir now returns an eof indication X-Git-Tag: BSD-4_3_Reno-Snapshot-Development~4257 X-Git-Url: https://git.subgeniuskitty.com/unix-history/.git/commitdiff_plain/930730fda4a84d270ddd788e2c31846b66b96054 readdir now returns an eof indication SCCS-vsn: sys/ufs/ffs/ffs_vnops.c 7.33 SCCS-vsn: sys/ufs/ffs/ufs_vnops.c 7.33 SCCS-vsn: sys/ufs/lfs/lfs_vnops.c 7.33 SCCS-vsn: sys/ufs/ufs/ufs_vnops.c 7.33 --- diff --git a/usr/src/sys/ufs/ffs/ffs_vnops.c b/usr/src/sys/ufs/ffs/ffs_vnops.c index 1e17c735e8..d5d5bad63b 100644 --- a/usr/src/sys/ufs/ffs/ffs_vnops.c +++ b/usr/src/sys/ufs/ffs/ffs_vnops.c @@ -14,7 +14,7 @@ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. * - * @(#)ffs_vnops.c 7.32 (Berkeley) %G% + * @(#)ffs_vnops.c 7.33 (Berkeley) %G% */ #include "param.h" @@ -1245,10 +1245,11 @@ ufs_symlink(ndp, vap, target) /* * Vnode op for read and write */ -ufs_readdir(vp, uio, cred) +ufs_readdir(vp, uio, cred, eofflagp) struct vnode *vp; register struct uio *uio; struct ucred *cred; + int *eofflagp; { int count, lost, error; @@ -1261,6 +1262,10 @@ ufs_readdir(vp, uio, cred) uio->uio_iov->iov_len = count; error = ufs_read(vp, uio, 0, cred); uio->uio_resid += lost; + if ((VTOI(vp)->i_size - uio->uio_offset) <= 0) + *eofflagp = 1; + else + *eofflagp = 0; return (error); } diff --git a/usr/src/sys/ufs/ffs/ufs_vnops.c b/usr/src/sys/ufs/ffs/ufs_vnops.c index 3a72845e89..3778eb892f 100644 --- a/usr/src/sys/ufs/ffs/ufs_vnops.c +++ b/usr/src/sys/ufs/ffs/ufs_vnops.c @@ -14,7 +14,7 @@ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. * - * @(#)ufs_vnops.c 7.32 (Berkeley) %G% + * @(#)ufs_vnops.c 7.33 (Berkeley) %G% */ #include "param.h" @@ -1245,10 +1245,11 @@ ufs_symlink(ndp, vap, target) /* * Vnode op for read and write */ -ufs_readdir(vp, uio, cred) +ufs_readdir(vp, uio, cred, eofflagp) struct vnode *vp; register struct uio *uio; struct ucred *cred; + int *eofflagp; { int count, lost, error; @@ -1261,6 +1262,10 @@ ufs_readdir(vp, uio, cred) uio->uio_iov->iov_len = count; error = ufs_read(vp, uio, 0, cred); uio->uio_resid += lost; + if ((VTOI(vp)->i_size - uio->uio_offset) <= 0) + *eofflagp = 1; + else + *eofflagp = 0; return (error); } diff --git a/usr/src/sys/ufs/lfs/lfs_vnops.c b/usr/src/sys/ufs/lfs/lfs_vnops.c index d1b7183264..f434a61ae6 100644 --- a/usr/src/sys/ufs/lfs/lfs_vnops.c +++ b/usr/src/sys/ufs/lfs/lfs_vnops.c @@ -14,7 +14,7 @@ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. * - * @(#)lfs_vnops.c 7.32 (Berkeley) %G% + * @(#)lfs_vnops.c 7.33 (Berkeley) %G% */ #include "param.h" @@ -1245,10 +1245,11 @@ ufs_symlink(ndp, vap, target) /* * Vnode op for read and write */ -ufs_readdir(vp, uio, cred) +ufs_readdir(vp, uio, cred, eofflagp) struct vnode *vp; register struct uio *uio; struct ucred *cred; + int *eofflagp; { int count, lost, error; @@ -1261,6 +1262,10 @@ ufs_readdir(vp, uio, cred) uio->uio_iov->iov_len = count; error = ufs_read(vp, uio, 0, cred); uio->uio_resid += lost; + if ((VTOI(vp)->i_size - uio->uio_offset) <= 0) + *eofflagp = 1; + else + *eofflagp = 0; return (error); } diff --git a/usr/src/sys/ufs/ufs/ufs_vnops.c b/usr/src/sys/ufs/ufs/ufs_vnops.c index 3a72845e89..3778eb892f 100644 --- a/usr/src/sys/ufs/ufs/ufs_vnops.c +++ b/usr/src/sys/ufs/ufs/ufs_vnops.c @@ -14,7 +14,7 @@ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. * - * @(#)ufs_vnops.c 7.32 (Berkeley) %G% + * @(#)ufs_vnops.c 7.33 (Berkeley) %G% */ #include "param.h" @@ -1245,10 +1245,11 @@ ufs_symlink(ndp, vap, target) /* * Vnode op for read and write */ -ufs_readdir(vp, uio, cred) +ufs_readdir(vp, uio, cred, eofflagp) struct vnode *vp; register struct uio *uio; struct ucred *cred; + int *eofflagp; { int count, lost, error; @@ -1261,6 +1262,10 @@ ufs_readdir(vp, uio, cred) uio->uio_iov->iov_len = count; error = ufs_read(vp, uio, 0, cred); uio->uio_resid += lost; + if ((VTOI(vp)->i_size - uio->uio_offset) <= 0) + *eofflagp = 1; + else + *eofflagp = 0; return (error); }