--- 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 $'
! !