--- a/FileStream.st Wed Feb 04 11:20:17 2004 +0100
+++ b/FileStream.st Thu Feb 05 12:36:00 2004 +0100
@@ -717,7 +717,7 @@
} while ((currentPosition < 0) && (__threadErrno == EINTR));
if (currentPosition >= 0) {
- RETURN ( __MKSMALLINT(currentPosition) );
+ RETURN ( __MKINT(currentPosition) );
}
__INST(lastErrorNumber) = __MKSMALLINT(__threadErrno);
}
@@ -738,41 +738,39 @@
OBJ fp;
long nP;
- if ((__INST(canPosition) != false)
- || (newPos == __MKSMALLINT(0))) {
- if ((fp = __INST(filePointer)) != nil) {
- if (__isSmallInteger(newPos)) {
- f = __FILEVal(fp);
- nP = (long)__intVal(newPos);
- if (nP < 0) nP = 0;
+ if ((__INST(canPosition) != false) || (newPos == __MKSMALLINT(0))) {
+ if ((fp = __INST(filePointer)) != nil && __isInteger(newPos)) {
+ f = __FILEVal(fp);
+ nP = (long)__signedLongIntVal(newPos);
+ /* better return error here? */
+ if (nP < 0) nP = 0;
- do {
+ do {
#ifdef WIN32
- __threadErrno = 0;
- if (__INST(buffered) == true) {
- ret = STX_C_CALL3( "fseek", fseek, f, nP, SEEK_SET);
- } else {
- __INST(readAhead) = nil;
- ret = STX_C_CALL3( "lseek", lseek, fileno(f), nP, SEEK_SET);
- }
+ __threadErrno = 0;
+ if (__INST(buffered) == true) {
+ ret = STX_C_CALL3( "fseek", fseek, f, nP, SEEK_SET);
+ } else {
+ __INST(readAhead) = nil;
+ ret = STX_C_CALL3( "lseek", lseek, fileno(f), nP, SEEK_SET);
+ }
#else
- if (__INST(buffered) == true) {
- ret = fseek(f, nP, SEEK_SET);
- } else {
- ret = lseek(fileno(f), nP, SEEK_SET);
- }
+ if (__INST(buffered) == true) {
+ ret = fseek(f, nP, SEEK_SET);
+ } else {
+ ret = lseek(fileno(f), nP, SEEK_SET);
+ }
#endif
- } while ((ret < 0) && (__threadErrno == EINTR));
- if (ret >= 0) {
- __INST(position) = newPos;
- /*
- * just to make certain ...
- */
- __INST(hitEOF) = false;
- RETURN ( self );
- }
- __INST(lastErrorNumber) = __MKSMALLINT(__threadErrno);
+ } while ((ret < 0) && (__threadErrno == EINTR));
+ if (ret >= 0) {
+ __INST(position) = newPos;
+ /*
+ * just to make certain ...
+ */
+ __INST(hitEOF) = false;
+ RETURN ( self );
}
+ __INST(lastErrorNumber) = __MKSMALLINT(__threadErrno);
}
}
%}.
@@ -1386,7 +1384,7 @@
!FileStream class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/FileStream.st,v 1.97 2004-01-14 13:04:57 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/FileStream.st,v 1.98 2004-02-05 11:36:00 stefan Exp $'
! !
FileStream initialize!