FileStream.st
changeset 2796 b45639a2fc1e
parent 2766 755c65a368eb
child 2808 3a9ce7aadad8
--- a/FileStream.st	Mon Jul 28 20:35:18 1997 +0200
+++ b/FileStream.st	Mon Jul 28 20:47:21 1997 +0200
@@ -534,14 +534,15 @@
 
     FILE *f;
     long currentPosition;
+    extern long ftell(), lseek();
 
     if (__INST(filePointer) != nil) {
 	f = __FILEVal(__INST(filePointer));
 	do {
 	    if (__INST(buffered) == true) {
-		currentPosition = (long) ftell(f);
+		currentPosition = ftell(f);
 	    } else {
-		currentPosition = (long) lseek(fileno(f), 0L, SEEK_CUR);
+		currentPosition = lseek(fileno(f), 0L, SEEK_CUR);
 	    }
 	} while ((currentPosition < 0) && (errno == EINTR));
 	if (currentPosition >= 0) {
@@ -564,20 +565,26 @@
 %{  /* NOCONTEXT */
 
     FILE *f;
-    int ret;
+    long ret;
     OBJ fp;
+    long nP;
+    extern long lseek();
 
     if ((fp = __INST(filePointer)) != nil) {
 	if (__isSmallInteger(newPos)) {
 	    f = __FILEVal(fp);
+	    nP = (long)__intVal(newPos);
+
 	    /*
 	     * notice: Smalltalk index starts at 1
 	     */
+	    nP--;
+
 	    do {
 		if (__INST(buffered) == true) {
-		    ret = fseek(f, (long) (__intVal(newPos) - 1), SEEK_SET);
+		    ret = fseek(f, nP, SEEK_SET);
 		} else {
-		    ret = (long) lseek(fileno(f), (long)(__intVal(newPos) - 1), SEEK_SET);
+		    ret = lseek(fileno(f), nP, SEEK_SET);
 		}
 	    } while ((ret < 0) && (errno == EINTR));
 	    if (ret >= 0) {
@@ -602,7 +609,8 @@
 
 %{
     FILE *f;
-    int ret;
+    long ret;
+    extern long lseek();
 
     if (__INST(filePointer) != nil) {
 	f = __FILEVal(__INST(filePointer));
@@ -611,7 +619,7 @@
 	    if (__INST(buffered) == true) {
 		ret = fseek(f, 0L, SEEK_END);
 	    } else {
-		ret = (long)lseek(fileno(f), 0L, SEEK_END);
+		ret = lseek(fileno(f), 0L, SEEK_END);
 	    }
 	} while ((ret < 0) && (errno == EINTR));
 	if (ret >= 0) {
@@ -685,5 +693,5 @@
 !FileStream class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/FileStream.st,v 1.38 1997-07-22 13:22:57 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/FileStream.st,v 1.39 1997-07-28 18:47:21 cg Exp $'
 ! !