From 6794d53aba49f8a7c27535e15b5b8d7de60551ee Mon Sep 17 00:00:00 2001
From: Marcus Comstedt <marcus@mc.pp.se>
Date: Tue, 15 Apr 2003 15:42:34 +0200
Subject: [PATCH] Optimized seek in read mode.

Rev: src/modules/Gz/module.pmod.in:1.11
---
 src/modules/Gz/module.pmod.in | 15 +++++++++------
 1 file changed, 9 insertions(+), 6 deletions(-)

diff --git a/src/modules/Gz/module.pmod.in b/src/modules/Gz/module.pmod.in
index 05d75a3350..cf7519d81f 100644
--- a/src/modules/Gz/module.pmod.in
+++ b/src/modules/Gz/module.pmod.in
@@ -1,4 +1,4 @@
-// $Id: module.pmod.in,v 1.10 2003/04/15 13:39:31 marcus Exp $
+// $Id: module.pmod.in,v 1.11 2003/04/15 13:42:34 marcus Exp $
 #pike __REAL_VERSION__
 
 inherit @module@;
@@ -201,11 +201,14 @@ class _file {
 	pos += file_pos;
       if(pos < 0)
 	return -1;
-      if(!f->seek || f->seek(0)<0)
-	return -1;
-      file_pos = 0;
-      read_buf = "";
-      crc = crc32("");
+      if(pos < file_pos) {
+	if(!f->seek || f->seek(0)<0)
+	  return -1;
+	file_pos = 0;
+	read_buf = "";
+	crc = crc32("");
+      } else
+	pos -= file_pos;
       while(pos > 0) {
 	string r = read(pos>16384? 16384:pos);
 	if(!sizeof(r))
-- 
GitLab