about summary refs log tree commit diff
path: root/db2/os/os_seek.c
diff options
context:
space:
mode:
Diffstat (limited to 'db2/os/os_seek.c')
-rw-r--r--db2/os/os_seek.c16
1 files changed, 9 insertions, 7 deletions
diff --git a/db2/os/os_seek.c b/db2/os/os_seek.c
index e27044b626..159425cc27 100644
--- a/db2/os/os_seek.c
+++ b/db2/os/os_seek.c
@@ -1,14 +1,14 @@
 /*-
  * See the file LICENSE for redistribution information.
  *
- * Copyright (c) 1997
+ * Copyright (c) 1997, 1998
  *	Sleepycat Software.  All rights reserved.
  */
 
 #include "config.h"
 
 #ifndef lint
-static const char sccsid[] = "@(#)os_seek.c	10.6 (Sleepycat) 10/25/97";
+static const char sccsid[] = "@(#)os_seek.c	10.9 (Sleepycat) 4/19/98";
 #endif /* not lint */
 
 #ifndef NO_SYSTEM_INCLUDES
@@ -24,19 +24,21 @@ static const char sccsid[] = "@(#)os_seek.c	10.6 (Sleepycat) 10/25/97";
  * __os_seek --
  *	Seek to a page/byte offset in the file.
  *
- * PUBLIC: int __os_seek __P((int, size_t, db_pgno_t, u_long, int));
+ * PUBLIC: int __os_seek __P((int, size_t, db_pgno_t, u_int32_t, int, int));
  */
 int
-__os_seek(fd, pgsize, pageno, relative, whence)
+__os_seek(fd, pgsize, pageno, relative, isrewind, whence)
 	int fd;
 	size_t pgsize;
 	db_pgno_t pageno;
-	u_long relative;
-	int whence;
+	u_int32_t relative;
+	int isrewind, whence;
 {
 	off_t offset;
 
-	offset = pgsize * pageno + relative;
+	offset = (off_t)pgsize * pageno + relative;
+	if (isrewind)
+		offset = -offset;
 
 	return (lseek(fd, offset, whence) == -1 ? errno : 0);
 }