diff --git a/src/sys/ufs/ufs.c b/src/sys/ufs/ufs.c index 9035cb8..d35c4ea 100644 --- a/src/sys/ufs/ufs.c +++ b/src/sys/ufs/ufs.c @@ -92,6 +92,7 @@ ufs2_daddr_t addr, vbaddr; static ufs2_daddr_t blkmap, indmap; u_int u; + size_t offset = fd->offset; struct ufs_obj *ufsObj = fd->fsObj; blkbuf = ufsObj->dmadat->blkbuf; @@ -156,14 +157,15 @@ dp2 = ((struct ufs2_dinode *)blkbuf)[n]; #endif inomap = inode; - fd->offset = 0; + //fd->offset = 0; + offset = 0x0; blkmap = indmap = 0; } s = buf; size = DIP(di_size); fd->size = size; - n = size - fd->offset; + n = size - offset;//fd->offset; #ifdef DEBUG kprintf("n: [0x%X:0x%X:0x%X]\n",n,fd->offset,size); #endif @@ -174,8 +176,8 @@ nbyte = n; nb = nbyte; while (nb) { - lbn = lblkno(fs, fd->offset); - off = blkoff(fs, fd->offset); + lbn = lblkno(fs, offset);// fd->offset); + off = blkoff(fs, offset);//fd->offset); if (lbn < NDADDR) { addr = DIP(di_db[lbn]); } else if (lbn < NDADDR + NINDIR(fs)) { @@ -217,7 +219,8 @@ n = nb; memcpy(s, blkbuf + vboff, n); s += n; - fd->offset += n; + //fd->offset += n; + offset += n; nb -= n; } return nbyte; diff --git a/src/sys/vfs/vfs_syscalls.c b/src/sys/vfs/vfs_syscalls.c index cb906fd..c0711c2 100644 --- a/src/sys/vfs/vfs_syscalls.c +++ b/src/sys/vfs/vfs_syscalls.c @@ -119,6 +119,7 @@ return(error); count = fread(uap->buf,uap->nbyte,0x1,fd); + fd->offset += count; } #ifdef VFSDEBUG