diff options
author | das <das@FreeBSD.org> | 2004-01-20 00:40:35 +0000 |
---|---|---|
committer | das <das@FreeBSD.org> | 2004-01-20 00:40:35 +0000 |
commit | 16839accd25390c4a4eacbb59c2d098888d2d4b6 (patch) | |
tree | 9d57bdfba576e55ae58dd0059c9cce1cf6410d52 /lib/libc/db | |
parent | 43a6cd5e20685e537a0f0ad1d8394711988f06c4 (diff) | |
download | FreeBSD-src-16839accd25390c4a4eacbb59c2d098888d2d4b6.zip FreeBSD-src-16839accd25390c4a4eacbb59c2d098888d2d4b6.tar.gz |
Simplify mpool_get() and mpool_write() by using pread() and pwrite()
instead of lseek()/_read() and lseek()/_write().
PR: bin/54276
Submitted by: <dnelson@allantgroup.com>
Diffstat (limited to 'lib/libc/db')
-rw-r--r-- | lib/libc/db/mpool/mpool.c | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/lib/libc/db/mpool/mpool.c b/lib/libc/db/mpool/mpool.c index 698fa8a..e3af051 100644 --- a/lib/libc/db/mpool/mpool.c +++ b/lib/libc/db/mpool/mpool.c @@ -207,9 +207,8 @@ mpool_get(mp, pgno, flags) ++mp->pageread; #endif off = mp->pagesize * pgno; - if (lseek(mp->fd, off, SEEK_SET) != off) - return (NULL); - if ((nr = _read(mp->fd, bp->page, mp->pagesize)) != mp->pagesize) { + nr = pread(mp->fd, bp->page, mp->pagesize, off); + if (nr != mp->pagesize) { if (nr >= 0) errno = EFTYPE; return (NULL); @@ -381,9 +380,7 @@ mpool_write(mp, bp) (mp->pgout)(mp->pgcookie, bp->pgno, bp->page); off = mp->pagesize * bp->pgno; - if (lseek(mp->fd, off, SEEK_SET) != off) - return (RET_ERROR); - if (_write(mp->fd, bp->page, mp->pagesize) != mp->pagesize) + if (pwrite(mp->fd, bp->page, mp->pagesize, off) != mp->pagesize) return (RET_ERROR); bp->flags &= ~MPOOL_DIRTY; |