From e3cce87239a8bc917f235a4d9960a99ac7bb337f Mon Sep 17 00:00:00 2001 From: Ian Dowse Date: Sat, 4 Sep 2004 14:54:01 +0000 Subject: [PATCH] Reset the seek pointer to 0 when a file is successfully opened, since otherwise the initial seek offset will contain the directory offset of the filesystem block that contained its directory entry. This bug was mostly harmless because typically the directory is less than one filesystem block in size so the offset would be zero. It did however generally break loading a kernel from the (large) kernel compile directory. Also reset the seek pointer when a new inode is opened in read_inode(), though this is not actually necessary now because all callers set it afterwards. --- lib/libstand/ufs.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/libstand/ufs.c b/lib/libstand/ufs.c index 6a3d7584953..169991fb9fb 100644 --- a/lib/libstand/ufs.c +++ b/lib/libstand/ufs.c @@ -191,6 +191,7 @@ read_inode(inumber, f) fp->f_blkno[level] = -1; fp->f_buf_blkno = -1; } + fp->f_seekp = 0; out: free(buf); return (rc); @@ -685,6 +686,7 @@ ufs_open(upath, f) * Found terminal component. */ rc = 0; + fp->f_seekp = 0; out: if (buf) free(buf);