only raise LineTooLongError if handled; otherwise silently continue
authorClaus Gittinger <cg@exept.de>
Tue, 17 Aug 1999 12:15:45 +0200
changeset 4597 9628a80e23ec
parent 4596 66a082fbc5b3
child 4598 7bfc7f7c4c07
only raise LineTooLongError if handled; otherwise silently continue reading the long line.
ExtStream.st
ExtStream_win32.st
ExternalStream.st
ExternalStream_win32.st
--- a/ExtStream.st	Thu Aug 12 12:33:40 1999 +0200
+++ b/ExtStream.st	Tue Aug 17 12:15:45 1999 +0200
@@ -1516,8 +1516,8 @@
     "report an error, that the stream is already opened"
 
     ^ self class openErrorSignal
-        raiseRequestWith:self
-        errorString:(self class name , ' is already open')
+	raiseRequestWith:self
+	errorString:(self class name , ' is already open')
 
     "Modified: / 8.5.1999 / 20:12:30 / cg"
 !
@@ -1528,9 +1528,9 @@
     "report an error, that the stream is in binary mode"
 
     ^ self invalidModeSignal
-        raiseRequestWith:self
-             errorString:(self class name , ' is in binary mode')
-                      "/ in:thisContext sender
+	raiseRequestWith:self
+	     errorString:(self class name , ' is in binary mode')
+		      "/ in:thisContext sender
 
     "Modified: / 8.5.1999 / 20:12:43 / cg"
 !
@@ -1541,9 +1541,9 @@
     "report an error, that the stream is not in binary mode"
 
     ^ self invalidModeSignal
-        raiseRequestWith:self
-             errorString:(self class name , ' is not in binary mode')
-                      "/ in:thisContext sender
+	raiseRequestWith:self
+	     errorString:(self class name , ' is not in binary mode')
+		      "/ in:thisContext sender
 
     "Modified: / 8.5.1999 / 20:12:40 / cg"
 !
@@ -1554,9 +1554,9 @@
     "report an error, that the stream is not in buffered mode"
 
     ^ StreamErrorSignal
-        raiseRequestWith:self
-             errorString:(self class name , ' is unbuffered - operation not allowed')
-                      "/ in:thisContext sender
+	raiseRequestWith:self
+	     errorString:(self class name , ' is unbuffered - operation not allowed')
+		      "/ in:thisContext sender
 
     "Modified: / 8.5.1999 / 20:12:36 / cg"
 !
@@ -1567,9 +1567,9 @@
     "report an error, that the stream has not been opened"
 
     ^ StreamNotOpenSignal
-        raiseRequestWith:self
-             errorString:(self class name , ' not open')
-                      "/ in:thisContext sender
+	raiseRequestWith:self
+	     errorString:(self class name , ' not open')
+		      "/ in:thisContext sender
 
     "Modified: / 8.5.1999 / 20:12:33 / cg"
 !
@@ -1580,9 +1580,9 @@
     "report an error, that the stream is a readOnly stream"
 
     ^ self invalidWriteSignal
-          raiseWith:self
-          errorString:(self class name , ' is readonly')
-                      "/ in:thisContext sender
+	  raiseWith:self
+	  errorString:(self class name , ' is readonly')
+		      "/ in:thisContext sender
 
     "Modified: / 30.7.1999 / 17:08:19 / cg"
 !
@@ -1593,9 +1593,9 @@
     "report an error, that some unsupported operation was attempted"
 
     ^ self invalidOperationSignal
-        raiseRequestWith:self
-        errorString:'unsupported operation'
-                 "/ in:thisContext sender
+	raiseRequestWith:self
+	errorString:'unsupported operation'
+		 "/ in:thisContext sender
 
     "Modified: / 8.5.1999 / 20:12:24 / cg"
 !
@@ -1606,9 +1606,9 @@
     "report an error, that the stream is a writeOnly stream"
 
     ^ self invalidReadSignal
-        raiseRequestWith:self
-             errorString:(self class name , ' is writeonly')
-                      "/ in:thisContext sender
+	raiseRequestWith:self
+	     errorString:(self class name , ' is writeonly')
+		      "/ in:thisContext sender
 
     "Modified: / 8.5.1999 / 20:12:20 / cg"
 !
@@ -1621,9 +1621,9 @@
      which is no longer available and has been mounted soft)"
 
     ^ StreamIOErrorSignal
-        raiseRequestWith:self
-             errorString:('I/O error: ' , self lastErrorString)
-                      "/ in:thisContext sender
+	raiseRequestWith:self
+	     errorString:('I/O error: ' , self lastErrorString)
+		      "/ in:thisContext sender
 
     "Modified: / 8.5.1999 / 20:12:16 / cg"
 !
@@ -1649,9 +1649,9 @@
     "report an error, that the open failed"
 
     ^ self class openErrorSignal
-        raiseRequestWith:self
-             errorString:('error on open: ' , self lastErrorString)
-                      "/ in:thisContext sender
+	raiseRequestWith:self
+	     errorString:('error on open: ' , self lastErrorString)
+		      "/ in:thisContext sender
 
     "Modified: / 28.1.1998 / 14:37:42 / stefan"
     "Modified: / 8.5.1999 / 20:12:12 / cg"
@@ -1663,9 +1663,9 @@
     "report an error, that some read error occured"
 
     ^ ReadErrorSignal
-        raiseRequestWith:self
-             errorString:('read error: ' , self lastErrorString)
-                      "/ in:thisContext sender
+	raiseRequestWith:self
+	     errorString:('read error: ' , self lastErrorString)
+		      "/ in:thisContext sender
 
     "Modified: / 8.5.1999 / 20:12:00 / cg"
 !
@@ -1676,9 +1676,9 @@
     "report an error, that some write error occured"
 
     ^ WriteErrorSignal
-        raiseRequestWith:self
-             errorString:('write error: ' , self lastErrorString)
-                      "/ in:thisContext sender
+	raiseRequestWith:self
+	     errorString:('write error: ' , self lastErrorString)
+		      "/ in:thisContext sender
 
     "Modified: / 8.5.1999 / 20:12:09 / cg"
 ! !
@@ -1890,9 +1890,12 @@
 	"/ concatenation in your exception handler (the receiver and the partial
 	"/ line are passed as parameter)
 
-	^ LineTooLongErrorSignal
-	    raiseRequestWith:(Array with:self with:line)
-		 errorString:('line too long read error')
+	LineTooLongErrorSignal isHandled ifTrue:[
+	    ^ LineTooLongErrorSignal
+		raiseRequestWith:(Array with:self with:line)
+		     errorString:('line too long read error')
+	].
+	^ line , self nextLine
     ].
 
     hitEOF ifTrue:[^ self pastEnd].
@@ -2580,28 +2583,28 @@
     __INST(lastErrorNumber) = nil;
     if (((fp = __INST(filePointer)) != nil)
      && (__INST(mode) != @symbol(writeonly))) {
-        f = __FILEVal(fp);
-
-        _buffered = (__INST(buffered) == true);
-        if (_buffered) {
-            __READING__(f)
-        }
-        __READBYTE__(ret, f, &byte, _buffered);
-        if (ret > 0) {
-            OBJ pos;
-
-            if ((pos = __INST(position)) != nil) {
-                __INST(position) = __MKSMALLINT(__intVal(pos) + 1);
-            }
-            RETURN (__MKSMALLINT(byte));
-        }
-
-        if (ret == 0) {
-            __INST(hitEOF) = true;
-        } else /* ret < 0 */ {
-            __INST(position) = nil;
-            __INST(lastErrorNumber) = __MKSMALLINT(errno);
-        }
+	f = __FILEVal(fp);
+
+	_buffered = (__INST(buffered) == true);
+	if (_buffered) {
+	    __READING__(f)
+	}
+	__READBYTE__(ret, f, &byte, _buffered);
+	if (ret > 0) {
+	    OBJ pos;
+
+	    if ((pos = __INST(position)) != nil) {
+		__INST(position) = __MKSMALLINT(__intVal(pos) + 1);
+	    }
+	    RETURN (__MKSMALLINT(byte));
+	}
+
+	if (ret == 0) {
+	    __INST(hitEOF) = true;
+	} else /* ret < 0 */ {
+	    __INST(position) = nil;
+	    __INST(lastErrorNumber) = __MKSMALLINT(errno);
+	}
     }
 %}.
     hitEOF ifTrue:[^ self pastEnd].
@@ -2747,64 +2750,64 @@
 
     __INST(lastErrorNumber) = nil;
     if (((fp = __INST(filePointer)) != nil)
-        && (__INST(mode) != @symbol(writeonly))
+	&& (__INST(mode) != @symbol(writeonly))
     ) {
-        FILEPOINTER f;
-        int ret, _buffered;
-        int value;
-        union {
-            unsigned char buffer[4];
-            int intVal;
-        } u;
-
-        f = __FILEVal(fp);
-        _buffered = (__INST(buffered) == true);
-        if (_buffered) {
-            __READING__(f)
-        }
-        __READBYTES__(ret, f, u.buffer, 4, _buffered);
-
-        if (ret == 4) {
-            OBJ pos;
-
-            if ((pos = __INST(position)) != nil) {
-                __INST(position) = __MKSMALLINT(__intVal(pos) + 4);
-            }
-            if (msbFlag == true) {
+	FILEPOINTER f;
+	int ret, _buffered;
+	int value;
+	union {
+	    unsigned char buffer[4];
+	    int intVal;
+	} u;
+
+	f = __FILEVal(fp);
+	_buffered = (__INST(buffered) == true);
+	if (_buffered) {
+	    __READING__(f)
+	}
+	__READBYTES__(ret, f, u.buffer, 4, _buffered);
+
+	if (ret == 4) {
+	    OBJ pos;
+
+	    if ((pos = __INST(position)) != nil) {
+		__INST(position) = __MKSMALLINT(__intVal(pos) + 4);
+	    }
+	    if (msbFlag == true) {
 #if defined(__MSBFIRST)
-                value = u.intVal;
+		value = u.intVal;
 #else
-                value = (u.buffer[0] & 0xFF);
-                value = (value << 8) | (u.buffer[1] & 0xFF);
-                value = (value << 8) | (u.buffer[2] & 0xFF);
-                value = (value << 8) | (u.buffer[3] & 0xFF);
+		value = (u.buffer[0] & 0xFF);
+		value = (value << 8) | (u.buffer[1] & 0xFF);
+		value = (value << 8) | (u.buffer[2] & 0xFF);
+		value = (value << 8) | (u.buffer[3] & 0xFF);
 #endif
-            } else {
+	    } else {
 #if defined(__LSBFIRST)
-                value = u.intVal;
+		value = u.intVal;
 #else
-                value = (u.buffer[3] & 0xFF);
-                value = (value << 8) | (u.buffer[2] & 0xFF);
-                value = (value << 8) | (u.buffer[1] & 0xFF);
-                value = (value << 8) | (u.buffer[0] & 0xFF);
+		value = (u.buffer[3] & 0xFF);
+		value = (value << 8) | (u.buffer[2] & 0xFF);
+		value = (value << 8) | (u.buffer[1] & 0xFF);
+		value = (value << 8) | (u.buffer[0] & 0xFF);
 #endif
-            }
+	    }
 #ifdef alpha64
-            RETURN ( __MKSMALLINT(value));
+	    RETURN ( __MKSMALLINT(value));
 #else
-            if ((value >= _MIN_INT) && (value <= _MAX_INT)) {
-                RETURN ( __MKSMALLINT(value));
-            }
-            RETURN ( __MKLARGEINT(value) );
+	    if ((value >= _MIN_INT) && (value <= _MAX_INT)) {
+		RETURN ( __MKSMALLINT(value));
+	    }
+	    RETURN ( __MKLARGEINT(value) );
 #endif
-        }
-
-        if (ret < 0) {
-            __INST(position) = nil;
-            __INST(lastErrorNumber) = __MKSMALLINT(errno);
-        } else /* ret == 0 */ {
-            __INST(hitEOF) = true;
-        }
+	}
+
+	if (ret < 0) {
+	    __INST(position) = nil;
+	    __INST(lastErrorNumber) = __MKSMALLINT(errno);
+	} else /* ret == 0 */ {
+	    __INST(hitEOF) = true;
+	}
     }
 %}.
     hitEOF ifTrue:[^ self pastEnd].
@@ -2826,51 +2829,51 @@
 
     __INST(lastErrorNumber) = nil;
     if (((fp = __INST(filePointer)) != nil)
-        && (__INST(mode) != @symbol(writeonly))
+	&& (__INST(mode) != @symbol(writeonly))
     ) {
-        FILEPOINTER f;
-        int ret, _buffered;
-        short value;
-        union {
-            unsigned char buffer[2];
-            short shortVal;
-        } u;
-
-        f = __FILEVal(fp);
-        _buffered = (__INST(buffered) == true);
-        if (_buffered) {
-            __READING__(f)
-        }
-        __READBYTES__(ret, f, u.buffer, 2, _buffered);
-
-        if (ret == 2) {
-            OBJ pos;
-
-            if ((pos = __INST(position)) != nil) {
-                __INST(position) = __MKSMALLINT(__intVal(pos) + 2);
-            }
-            if (msbFlag == true) {
+	FILEPOINTER f;
+	int ret, _buffered;
+	short value;
+	union {
+	    unsigned char buffer[2];
+	    short shortVal;
+	} u;
+
+	f = __FILEVal(fp);
+	_buffered = (__INST(buffered) == true);
+	if (_buffered) {
+	    __READING__(f)
+	}
+	__READBYTES__(ret, f, u.buffer, 2, _buffered);
+
+	if (ret == 2) {
+	    OBJ pos;
+
+	    if ((pos = __INST(position)) != nil) {
+		__INST(position) = __MKSMALLINT(__intVal(pos) + 2);
+	    }
+	    if (msbFlag == true) {
 #if defined(__MSBFIRST)
-                value = u.shortVal;
+		value = u.shortVal;
 #else
-                value = ((u.buffer[0] & 0xFF) << 8) | (u.buffer[1] & 0xFF);
+		value = ((u.buffer[0] & 0xFF) << 8) | (u.buffer[1] & 0xFF);
 #endif
-            } else {
+	    } else {
 #if defined(__LSBFIRST)
-                value = u.shortVal;
+		value = u.shortVal;
 #else
-                value = ((u.buffer[1] & 0xFF) << 8) | (u.buffer[0] & 0xFF);
+		value = ((u.buffer[1] & 0xFF) << 8) | (u.buffer[0] & 0xFF);
 #endif
-            }
-            RETURN (__MKSMALLINT(value));
-        }
-
-        if (ret < 0) {
-            __INST(position) = nil;
-            __INST(lastErrorNumber) = __MKSMALLINT(errno);
-        } else /* ret == 0 */ {
-            __INST(hitEOF) = true;
-        }
+	    }
+	    RETURN (__MKSMALLINT(value));
+	}
+
+	if (ret < 0) {
+	    __INST(position) = nil;
+	    __INST(lastErrorNumber) = __MKSMALLINT(errno);
+	} else /* ret == 0 */ {
+	    __INST(hitEOF) = true;
+	}
     }
 %}.
     hitEOF ifTrue:[^ self pastEnd].
@@ -2892,65 +2895,65 @@
 
     __INST(lastErrorNumber) = nil;
     if (((fp = __INST(filePointer)) != nil)
-        && (__INST(mode) != @symbol(writeonly))
+	&& (__INST(mode) != @symbol(writeonly))
     ) {
-        FILEPOINTER f;
-        int ret, _buffered;
-        unsigned INT value;
-        union {
-            unsigned char buffer[4];
-            unsigned int intVal;
-        } u;
-
-        f = __FILEVal(fp);
-        _buffered = (__INST(buffered) == true);
-        if (_buffered) {
-            __READING__(f)
-        }
-        __READBYTES__(ret, f, u.buffer, 4, _buffered);
-
-        if (ret == 4) {
-            OBJ pos;
-
-            if ((pos = __INST(position)) != nil) {
-                __INST(position) = __MKSMALLINT(__intVal(pos) + 4);
-            }
-            if (msbFlag == true) {
+	FILEPOINTER f;
+	int ret, _buffered;
+	unsigned INT value;
+	union {
+	    unsigned char buffer[4];
+	    unsigned int intVal;
+	} u;
+
+	f = __FILEVal(fp);
+	_buffered = (__INST(buffered) == true);
+	if (_buffered) {
+	    __READING__(f)
+	}
+	__READBYTES__(ret, f, u.buffer, 4, _buffered);
+
+	if (ret == 4) {
+	    OBJ pos;
+
+	    if ((pos = __INST(position)) != nil) {
+		__INST(position) = __MKSMALLINT(__intVal(pos) + 4);
+	    }
+	    if (msbFlag == true) {
 #if defined(__MSBFIRST)
-                value = u.intVal;
+		value = u.intVal;
 #else
-                value = u.buffer[0];
-                value = (value << 8) | u.buffer[1];
-                value = (value << 8) | u.buffer[2];
-                value = (value << 8) | u.buffer[3];
+		value = u.buffer[0];
+		value = (value << 8) | u.buffer[1];
+		value = (value << 8) | u.buffer[2];
+		value = (value << 8) | u.buffer[3];
 #endif
-            } else {
+	    } else {
 #if defined(__LSBFIRST)
-                value = u.intVal;
+		value = u.intVal;
 #else
-                value = u.buffer[3];
-                value = (value << 8) | u.buffer[2];
-                value = (value << 8) | u.buffer[1];
-                value = (value << 8) | u.buffer[0];
+		value = u.buffer[3];
+		value = (value << 8) | u.buffer[2];
+		value = (value << 8) | u.buffer[1];
+		value = (value << 8) | u.buffer[0];
 #endif
-            }
+	    }
 #ifdef alpha64
-            value &= 0xFFFFFFFF;
-            RETURN (__MKSMALLINT(value));
+	    value &= 0xFFFFFFFF;
+	    RETURN (__MKSMALLINT(value));
 #else
-            if (value <= _MAX_INT) {
-                RETURN (__MKSMALLINT(value));
-            }
-            RETURN (__MKULARGEINT(value) );
+	    if (value <= _MAX_INT) {
+		RETURN (__MKSMALLINT(value));
+	    }
+	    RETURN (__MKULARGEINT(value) );
 #endif
-        }
-
-        if (ret < 0) {
-            __INST(position) = nil;
-            __INST(lastErrorNumber) = __MKSMALLINT(errno);
-        } else /* ret == 0 */ {
-            __INST(hitEOF) = true;
-        }
+	}
+
+	if (ret < 0) {
+	    __INST(position) = nil;
+	    __INST(lastErrorNumber) = __MKSMALLINT(errno);
+	} else /* ret == 0 */ {
+	    __INST(hitEOF) = true;
+	}
     }
 %}.
     hitEOF ifTrue:[^ self pastEnd].
@@ -2971,51 +2974,51 @@
 
     __INST(lastErrorNumber) = nil;
     if (((fp = __INST(filePointer)) != nil)
-        && (__INST(mode) != @symbol(writeonly))
+	&& (__INST(mode) != @symbol(writeonly))
     ) {
-        FILEPOINTER f;
-        int ret, _buffered;
-        unsigned int value;
-        union {
-            unsigned char buffer[2];
-            unsigned short shortVal;
-        } u;
-
-        f = __FILEVal(fp);
-        _buffered = (__INST(buffered) == true);
-        if (_buffered) {
-            __READING__(f)
-        }
-        __READBYTES__(ret, f, u.buffer, 2, _buffered);
-
-        if (ret == 2) {
-            OBJ pos;
-
-            if ((pos = __INST(position)) != nil) {
-                __INST(position) = __MKSMALLINT(__intVal(pos) + 2);
-            }
-            if (msbFlag == true) {
+	FILEPOINTER f;
+	int ret, _buffered;
+	unsigned int value;
+	union {
+	    unsigned char buffer[2];
+	    unsigned short shortVal;
+	} u;
+
+	f = __FILEVal(fp);
+	_buffered = (__INST(buffered) == true);
+	if (_buffered) {
+	    __READING__(f)
+	}
+	__READBYTES__(ret, f, u.buffer, 2, _buffered);
+
+	if (ret == 2) {
+	    OBJ pos;
+
+	    if ((pos = __INST(position)) != nil) {
+		__INST(position) = __MKSMALLINT(__intVal(pos) + 2);
+	    }
+	    if (msbFlag == true) {
 #if defined(__MSBFIRST)
-                value = u.shortVal;
+		value = u.shortVal;
 #else
-                value = (u.buffer[0] << 8) | u.buffer[1];
+		value = (u.buffer[0] << 8) | u.buffer[1];
 #endif
-            } else {
+	    } else {
 #if defined(__LSBFIRST)
-                value = u.shortVal;
+		value = u.shortVal;
 #else
-                value = (u.buffer[1] << 8) | u.buffer[0];
+		value = (u.buffer[1] << 8) | u.buffer[0];
 #endif
-            }
-            RETURN (__MKSMALLINT(value));
-        }
-
-        if (ret < 0) {
-            __INST(position) = nil;
-            __INST(lastErrorNumber) = __MKSMALLINT(errno);
-        } else /* ret == 0 */ {
-            __INST(hitEOF) = true;
-        }
+	    }
+	    RETURN (__MKSMALLINT(value));
+	}
+
+	if (ret < 0) {
+	    __INST(position) = nil;
+	    __INST(lastErrorNumber) = __MKSMALLINT(errno);
+	} else /* ret == 0 */ {
+	    __INST(hitEOF) = true;
+	}
     }
 %}.
     hitEOF ifTrue:[^ self pastEnd].
@@ -3176,8 +3179,8 @@
 %{
     int num;
     union {
-        char bytes[4];
-        int intVal;
+	char bytes[4];
+	int intVal;
     } u;
     FILEPOINTER f;
     int cnt, _buffered;
@@ -3185,62 +3188,62 @@
 
     __INST(lastErrorNumber) = nil;
     if (__isSmallInteger(aNumber)) {
-        num = __intVal(aNumber);
+	num = __intVal(aNumber);
     } else {
 #ifdef alpha64
-        goto badArg;
+	goto badArg;
 #else
-        num = __longIntVal(aNumber);
-        if (num == 0) {
-            num = __signedLongIntVal(aNumber);
-            if (num == 0) {
-                /* bad arg or out-of-range integer  
-                 * (handled by the fallBack code)
-                 */
-                goto badArg;
-            }
-        }
+	num = __longIntVal(aNumber);
+	if (num == 0) {
+	    num = __signedLongIntVal(aNumber);
+	    if (num == 0) {
+		/* bad arg or out-of-range integer  
+		 * (handled by the fallBack code)
+		 */
+		goto badArg;
+	    }
+	}
 #endif
     }
 
     if (((fp = __INST(filePointer)) != nil)
      && (__INST(mode) != @symbol(readonly))
     ) {
-        if (msbFlag == true) {
+	if (msbFlag == true) {
 #if defined(__MSBFIRST)
-            u.intVal = num;
+	    u.intVal = num;
 #else
-            u.bytes[0] = (num >> 24) & 0xFF;
-            u.bytes[1] = (num >> 16) & 0xFF;
-            u.bytes[2] = (num >> 8) & 0xFF;
-            u.bytes[3] = num & 0xFF;
+	    u.bytes[0] = (num >> 24) & 0xFF;
+	    u.bytes[1] = (num >> 16) & 0xFF;
+	    u.bytes[2] = (num >> 8) & 0xFF;
+	    u.bytes[3] = num & 0xFF;
 #endif
-        } else {
+	} else {
 #if defined(__LSBFIRST)
-            u.intVal = num;
+	    u.intVal = num;
 #else
-            u.bytes[3] = (num >> 24) & 0xFF;
-            u.bytes[2] = (num >> 16) & 0xFF;
-            u.bytes[1] = (num >> 8) & 0xFF;
-            u.bytes[0] = num & 0xFF;
+	    u.bytes[3] = (num >> 24) & 0xFF;
+	    u.bytes[2] = (num >> 16) & 0xFF;
+	    u.bytes[1] = (num >> 8) & 0xFF;
+	    u.bytes[0] = num & 0xFF;
 #endif
-        }
-
-        f = __FILEVal(fp);
-        if (_buffered = (__INST(buffered) == true)) {
-            __WRITING__(f)
-        } 
-        __WRITEBYTES__(cnt, f, u.bytes, 4, _buffered);
-
-        if (cnt == 4) {
-            OBJ pos;
-
-            if ((pos = __INST(position)) != nil) {
-                __INST(position) = __MKSMALLINT(__intVal(pos) + 4);
-            }
-            RETURN ( self );
-        }
-        __INST(lastErrorNumber) = __MKSMALLINT(errno);
+	}
+
+	f = __FILEVal(fp);
+	if (_buffered = (__INST(buffered) == true)) {
+	    __WRITING__(f)
+	} 
+	__WRITEBYTES__(cnt, f, u.bytes, 4, _buffered);
+
+	if (cnt == 4) {
+	    OBJ pos;
+
+	    if ((pos = __INST(position)) != nil) {
+		__INST(position) = __MKSMALLINT(__intVal(pos) + 4);
+	    }
+	    RETURN ( self );
+	}
+	__INST(lastErrorNumber) = __MKSMALLINT(errno);
     }
 badArg: ;
 %}.
@@ -3249,7 +3252,7 @@
     lastErrorNumber notNil ifTrue:[self writeError. ^ self].
 
     aNumber isInteger ifTrue:[
-        ^ super nextPutLong:aNumber MSB:msbFlag
+	^ super nextPutLong:aNumber MSB:msbFlag
     ].
     self argumentMustBeInteger
 !
@@ -3263,8 +3266,8 @@
 %{
     int num;
     union {
-        char bytes[2];
-        short shortVal;
+	char bytes[2];
+	short shortVal;
     } u;
 
     FILEPOINTER f;
@@ -3273,41 +3276,41 @@
 
     __INST(lastErrorNumber) = nil;
     if (((fp = __INST(filePointer)) != nil)
-        && (__INST(mode) != @symbol(readonly))
-        && __isSmallInteger(aNumber)
+	&& (__INST(mode) != @symbol(readonly))
+	&& __isSmallInteger(aNumber)
     ) {
-        num = __intVal(aNumber);
-        if (msbFlag == true) {
+	num = __intVal(aNumber);
+	if (msbFlag == true) {
 #if defined(__MSBFIRST)
-            u.shortVal = num;
+	    u.shortVal = num;
 #else
-            u.bytes[0] = (num >> 8) & 0xFF;
-            u.bytes[1] = num & 0xFF;
+	    u.bytes[0] = (num >> 8) & 0xFF;
+	    u.bytes[1] = num & 0xFF;
 #endif
-        } else {
+	} else {
 #if defined(__LSBFIRST)
-            u.shortVal = num;
+	    u.shortVal = num;
 #else
-            u.bytes[1] = (num >> 8) & 0xFF;
-            u.bytes[0] = num & 0xFF;
+	    u.bytes[1] = (num >> 8) & 0xFF;
+	    u.bytes[0] = num & 0xFF;
 #endif
-        }
-
-        f = __FILEVal(fp);
-        if (_buffered = (__INST(buffered) == true)) {
-            __WRITING__(f)
-        } 
-        __WRITEBYTES__(cnt, f, u.bytes, 2, _buffered);
-
-        if (cnt == 2) {
-            OBJ pos;
-
-            if ((pos = __INST(position)) != nil) {
-                __INST(position) = __MKSMALLINT(__intVal(pos) + 2);
-            }
-            RETURN ( self );
-        }
-        __INST(lastErrorNumber) = __MKSMALLINT(errno);
+	}
+
+	f = __FILEVal(fp);
+	if (_buffered = (__INST(buffered) == true)) {
+	    __WRITING__(f)
+	} 
+	__WRITEBYTES__(cnt, f, u.bytes, 2, _buffered);
+
+	if (cnt == 2) {
+	    OBJ pos;
+
+	    if ((pos = __INST(position)) != nil) {
+		__INST(position) = __MKSMALLINT(__intVal(pos) + 2);
+	    }
+	    RETURN ( self );
+	}
+	__INST(lastErrorNumber) = __MKSMALLINT(errno);
     }
 %}.
     lastErrorNumber notNil ifTrue:[^ self writeError. ^ self].
@@ -3340,26 +3343,26 @@
 
     if (__isSmallInteger(aFileDescriptor) 
      && (__qClass(openmode)== @global(String))) {
-        f = (FILEPOINTER) fdopen(__intVal(aFileDescriptor), (char *)__stringVal(openmode));
-        if (f == NULL) {
-            __INST(lastErrorNumber) = __MKSMALLINT(errno);
-            __INST(position) = nil;
-        } else {
-            __INST(filePointer) = fp = __MKFILEPOINTER(f); __STORE(self, fp);
-            __INST(position) = __MKSMALLINT(1);
-            retVal = self;
-        }
+	f = (FILEPOINTER) fdopen(__intVal(aFileDescriptor), (char *)__stringVal(openmode));
+	if (f == NULL) {
+	    __INST(lastErrorNumber) = __MKSMALLINT(errno);
+	    __INST(position) = nil;
+	} else {
+	    __INST(filePointer) = fp = __MKFILEPOINTER(f); __STORE(self, fp);
+	    __INST(position) = __MKSMALLINT(1);
+	    retVal = self;
+	}
     }
 %}.
     retVal notNil ifTrue:[
-        buffered := true.       "default is buffered"
-        Lobby register:self
+	buffered := true.       "default is buffered"
+	Lobby register:self
     ].
     lastErrorNumber notNil ifTrue:[
-        "
-         the open failed for some reason ...
-        "
-        ^ self openError
+	"
+	 the open failed for some reason ...
+	"
+	^ self openError
     ].
     ^ retVal
 !
@@ -3376,24 +3379,24 @@
     OBJ fp;
 
     if (__isString(aPath)) { 
-        __BEGIN_INTERRUPTABLE__
-        do {
-            f = fopen((char *) __stringVal(aPath), (char *) __stringVal(mode));
-        } while ((f == NULL) && (errno == EINTR));
-        __END_INTERRUPTABLE__
-        if (f == NULL) {
-            __INST(lastErrorNumber) = __MKSMALLINT(errno);
-        } else {
-            __INST(filePointer) = fp = __MKFILEPOINTER(f); __STORE(self, fp);
-            ok = true;
-        }
+	__BEGIN_INTERRUPTABLE__
+	do {
+	    f = fopen((char *) __stringVal(aPath), (char *) __stringVal(mode));
+	} while ((f == NULL) && (errno == EINTR));
+	__END_INTERRUPTABLE__
+	if (f == NULL) {
+	    __INST(lastErrorNumber) = __MKSMALLINT(errno);
+	} else {
+	    __INST(filePointer) = fp = __MKFILEPOINTER(f); __STORE(self, fp);
+	    ok = true;
+	}
     }
 %}.
     ok ifFalse:[
-        "
-         the open failed for some reason ...
-        "
-        ^ self openError
+	"
+	 the open failed for some reason ...
+	"
+	^ self openError
     ].
     position := 1.
     Lobby register:self. 
@@ -4867,6 +4870,6 @@
 !ExternalStream class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Attic/ExtStream.st,v 1.196 1999-08-04 14:12:48 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Attic/ExtStream.st,v 1.197 1999-08-17 10:15:44 cg Exp $'
 ! !
 ExternalStream initialize!
--- a/ExtStream_win32.st	Thu Aug 12 12:33:40 1999 +0200
+++ b/ExtStream_win32.st	Tue Aug 17 12:15:45 1999 +0200
@@ -2211,9 +2211,12 @@
 	"/ concatenation in your exception handler (the receiver and the partial
 	"/ line are passed as parameter)
 
-	^ LineTooLongErrorSignal
-	    raiseRequestWith:(Array with:self with:line)
-		 errorString:('line too long read error')
+	LineTooLongErrorSignal isHandled ifTrue:[
+	    ^ LineTooLongErrorSignal
+		raiseRequestWith:(Array with:self with:line)
+		     errorString:('line too long read error')
+	].
+	^ line , self nextLine
     ].
 
     hitEOF ifTrue:[^ self pastEnd].
@@ -5051,6 +5054,6 @@
 !ExternalStream class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Attic/ExtStream_win32.st,v 1.13 1999-07-10 10:39:25 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Attic/ExtStream_win32.st,v 1.14 1999-08-17 10:15:45 cg Exp $'
 ! !
 ExternalStream initialize!
--- a/ExternalStream.st	Thu Aug 12 12:33:40 1999 +0200
+++ b/ExternalStream.st	Tue Aug 17 12:15:45 1999 +0200
@@ -1516,8 +1516,8 @@
     "report an error, that the stream is already opened"
 
     ^ self class openErrorSignal
-        raiseRequestWith:self
-        errorString:(self class name , ' is already open')
+	raiseRequestWith:self
+	errorString:(self class name , ' is already open')
 
     "Modified: / 8.5.1999 / 20:12:30 / cg"
 !
@@ -1528,9 +1528,9 @@
     "report an error, that the stream is in binary mode"
 
     ^ self invalidModeSignal
-        raiseRequestWith:self
-             errorString:(self class name , ' is in binary mode')
-                      "/ in:thisContext sender
+	raiseRequestWith:self
+	     errorString:(self class name , ' is in binary mode')
+		      "/ in:thisContext sender
 
     "Modified: / 8.5.1999 / 20:12:43 / cg"
 !
@@ -1541,9 +1541,9 @@
     "report an error, that the stream is not in binary mode"
 
     ^ self invalidModeSignal
-        raiseRequestWith:self
-             errorString:(self class name , ' is not in binary mode')
-                      "/ in:thisContext sender
+	raiseRequestWith:self
+	     errorString:(self class name , ' is not in binary mode')
+		      "/ in:thisContext sender
 
     "Modified: / 8.5.1999 / 20:12:40 / cg"
 !
@@ -1554,9 +1554,9 @@
     "report an error, that the stream is not in buffered mode"
 
     ^ StreamErrorSignal
-        raiseRequestWith:self
-             errorString:(self class name , ' is unbuffered - operation not allowed')
-                      "/ in:thisContext sender
+	raiseRequestWith:self
+	     errorString:(self class name , ' is unbuffered - operation not allowed')
+		      "/ in:thisContext sender
 
     "Modified: / 8.5.1999 / 20:12:36 / cg"
 !
@@ -1567,9 +1567,9 @@
     "report an error, that the stream has not been opened"
 
     ^ StreamNotOpenSignal
-        raiseRequestWith:self
-             errorString:(self class name , ' not open')
-                      "/ in:thisContext sender
+	raiseRequestWith:self
+	     errorString:(self class name , ' not open')
+		      "/ in:thisContext sender
 
     "Modified: / 8.5.1999 / 20:12:33 / cg"
 !
@@ -1580,9 +1580,9 @@
     "report an error, that the stream is a readOnly stream"
 
     ^ self invalidWriteSignal
-          raiseWith:self
-          errorString:(self class name , ' is readonly')
-                      "/ in:thisContext sender
+	  raiseWith:self
+	  errorString:(self class name , ' is readonly')
+		      "/ in:thisContext sender
 
     "Modified: / 30.7.1999 / 17:08:19 / cg"
 !
@@ -1593,9 +1593,9 @@
     "report an error, that some unsupported operation was attempted"
 
     ^ self invalidOperationSignal
-        raiseRequestWith:self
-        errorString:'unsupported operation'
-                 "/ in:thisContext sender
+	raiseRequestWith:self
+	errorString:'unsupported operation'
+		 "/ in:thisContext sender
 
     "Modified: / 8.5.1999 / 20:12:24 / cg"
 !
@@ -1606,9 +1606,9 @@
     "report an error, that the stream is a writeOnly stream"
 
     ^ self invalidReadSignal
-        raiseRequestWith:self
-             errorString:(self class name , ' is writeonly')
-                      "/ in:thisContext sender
+	raiseRequestWith:self
+	     errorString:(self class name , ' is writeonly')
+		      "/ in:thisContext sender
 
     "Modified: / 8.5.1999 / 20:12:20 / cg"
 !
@@ -1621,9 +1621,9 @@
      which is no longer available and has been mounted soft)"
 
     ^ StreamIOErrorSignal
-        raiseRequestWith:self
-             errorString:('I/O error: ' , self lastErrorString)
-                      "/ in:thisContext sender
+	raiseRequestWith:self
+	     errorString:('I/O error: ' , self lastErrorString)
+		      "/ in:thisContext sender
 
     "Modified: / 8.5.1999 / 20:12:16 / cg"
 !
@@ -1649,9 +1649,9 @@
     "report an error, that the open failed"
 
     ^ self class openErrorSignal
-        raiseRequestWith:self
-             errorString:('error on open: ' , self lastErrorString)
-                      "/ in:thisContext sender
+	raiseRequestWith:self
+	     errorString:('error on open: ' , self lastErrorString)
+		      "/ in:thisContext sender
 
     "Modified: / 28.1.1998 / 14:37:42 / stefan"
     "Modified: / 8.5.1999 / 20:12:12 / cg"
@@ -1663,9 +1663,9 @@
     "report an error, that some read error occured"
 
     ^ ReadErrorSignal
-        raiseRequestWith:self
-             errorString:('read error: ' , self lastErrorString)
-                      "/ in:thisContext sender
+	raiseRequestWith:self
+	     errorString:('read error: ' , self lastErrorString)
+		      "/ in:thisContext sender
 
     "Modified: / 8.5.1999 / 20:12:00 / cg"
 !
@@ -1676,9 +1676,9 @@
     "report an error, that some write error occured"
 
     ^ WriteErrorSignal
-        raiseRequestWith:self
-             errorString:('write error: ' , self lastErrorString)
-                      "/ in:thisContext sender
+	raiseRequestWith:self
+	     errorString:('write error: ' , self lastErrorString)
+		      "/ in:thisContext sender
 
     "Modified: / 8.5.1999 / 20:12:09 / cg"
 ! !
@@ -1890,9 +1890,12 @@
 	"/ concatenation in your exception handler (the receiver and the partial
 	"/ line are passed as parameter)
 
-	^ LineTooLongErrorSignal
-	    raiseRequestWith:(Array with:self with:line)
-		 errorString:('line too long read error')
+	LineTooLongErrorSignal isHandled ifTrue:[
+	    ^ LineTooLongErrorSignal
+		raiseRequestWith:(Array with:self with:line)
+		     errorString:('line too long read error')
+	].
+	^ line , self nextLine
     ].
 
     hitEOF ifTrue:[^ self pastEnd].
@@ -2580,28 +2583,28 @@
     __INST(lastErrorNumber) = nil;
     if (((fp = __INST(filePointer)) != nil)
      && (__INST(mode) != @symbol(writeonly))) {
-        f = __FILEVal(fp);
-
-        _buffered = (__INST(buffered) == true);
-        if (_buffered) {
-            __READING__(f)
-        }
-        __READBYTE__(ret, f, &byte, _buffered);
-        if (ret > 0) {
-            OBJ pos;
-
-            if ((pos = __INST(position)) != nil) {
-                __INST(position) = __MKSMALLINT(__intVal(pos) + 1);
-            }
-            RETURN (__MKSMALLINT(byte));
-        }
-
-        if (ret == 0) {
-            __INST(hitEOF) = true;
-        } else /* ret < 0 */ {
-            __INST(position) = nil;
-            __INST(lastErrorNumber) = __MKSMALLINT(errno);
-        }
+	f = __FILEVal(fp);
+
+	_buffered = (__INST(buffered) == true);
+	if (_buffered) {
+	    __READING__(f)
+	}
+	__READBYTE__(ret, f, &byte, _buffered);
+	if (ret > 0) {
+	    OBJ pos;
+
+	    if ((pos = __INST(position)) != nil) {
+		__INST(position) = __MKSMALLINT(__intVal(pos) + 1);
+	    }
+	    RETURN (__MKSMALLINT(byte));
+	}
+
+	if (ret == 0) {
+	    __INST(hitEOF) = true;
+	} else /* ret < 0 */ {
+	    __INST(position) = nil;
+	    __INST(lastErrorNumber) = __MKSMALLINT(errno);
+	}
     }
 %}.
     hitEOF ifTrue:[^ self pastEnd].
@@ -2747,64 +2750,64 @@
 
     __INST(lastErrorNumber) = nil;
     if (((fp = __INST(filePointer)) != nil)
-        && (__INST(mode) != @symbol(writeonly))
+	&& (__INST(mode) != @symbol(writeonly))
     ) {
-        FILEPOINTER f;
-        int ret, _buffered;
-        int value;
-        union {
-            unsigned char buffer[4];
-            int intVal;
-        } u;
-
-        f = __FILEVal(fp);
-        _buffered = (__INST(buffered) == true);
-        if (_buffered) {
-            __READING__(f)
-        }
-        __READBYTES__(ret, f, u.buffer, 4, _buffered);
-
-        if (ret == 4) {
-            OBJ pos;
-
-            if ((pos = __INST(position)) != nil) {
-                __INST(position) = __MKSMALLINT(__intVal(pos) + 4);
-            }
-            if (msbFlag == true) {
+	FILEPOINTER f;
+	int ret, _buffered;
+	int value;
+	union {
+	    unsigned char buffer[4];
+	    int intVal;
+	} u;
+
+	f = __FILEVal(fp);
+	_buffered = (__INST(buffered) == true);
+	if (_buffered) {
+	    __READING__(f)
+	}
+	__READBYTES__(ret, f, u.buffer, 4, _buffered);
+
+	if (ret == 4) {
+	    OBJ pos;
+
+	    if ((pos = __INST(position)) != nil) {
+		__INST(position) = __MKSMALLINT(__intVal(pos) + 4);
+	    }
+	    if (msbFlag == true) {
 #if defined(__MSBFIRST)
-                value = u.intVal;
+		value = u.intVal;
 #else
-                value = (u.buffer[0] & 0xFF);
-                value = (value << 8) | (u.buffer[1] & 0xFF);
-                value = (value << 8) | (u.buffer[2] & 0xFF);
-                value = (value << 8) | (u.buffer[3] & 0xFF);
+		value = (u.buffer[0] & 0xFF);
+		value = (value << 8) | (u.buffer[1] & 0xFF);
+		value = (value << 8) | (u.buffer[2] & 0xFF);
+		value = (value << 8) | (u.buffer[3] & 0xFF);
 #endif
-            } else {
+	    } else {
 #if defined(__LSBFIRST)
-                value = u.intVal;
+		value = u.intVal;
 #else
-                value = (u.buffer[3] & 0xFF);
-                value = (value << 8) | (u.buffer[2] & 0xFF);
-                value = (value << 8) | (u.buffer[1] & 0xFF);
-                value = (value << 8) | (u.buffer[0] & 0xFF);
+		value = (u.buffer[3] & 0xFF);
+		value = (value << 8) | (u.buffer[2] & 0xFF);
+		value = (value << 8) | (u.buffer[1] & 0xFF);
+		value = (value << 8) | (u.buffer[0] & 0xFF);
 #endif
-            }
+	    }
 #ifdef alpha64
-            RETURN ( __MKSMALLINT(value));
+	    RETURN ( __MKSMALLINT(value));
 #else
-            if ((value >= _MIN_INT) && (value <= _MAX_INT)) {
-                RETURN ( __MKSMALLINT(value));
-            }
-            RETURN ( __MKLARGEINT(value) );
+	    if ((value >= _MIN_INT) && (value <= _MAX_INT)) {
+		RETURN ( __MKSMALLINT(value));
+	    }
+	    RETURN ( __MKLARGEINT(value) );
 #endif
-        }
-
-        if (ret < 0) {
-            __INST(position) = nil;
-            __INST(lastErrorNumber) = __MKSMALLINT(errno);
-        } else /* ret == 0 */ {
-            __INST(hitEOF) = true;
-        }
+	}
+
+	if (ret < 0) {
+	    __INST(position) = nil;
+	    __INST(lastErrorNumber) = __MKSMALLINT(errno);
+	} else /* ret == 0 */ {
+	    __INST(hitEOF) = true;
+	}
     }
 %}.
     hitEOF ifTrue:[^ self pastEnd].
@@ -2826,51 +2829,51 @@
 
     __INST(lastErrorNumber) = nil;
     if (((fp = __INST(filePointer)) != nil)
-        && (__INST(mode) != @symbol(writeonly))
+	&& (__INST(mode) != @symbol(writeonly))
     ) {
-        FILEPOINTER f;
-        int ret, _buffered;
-        short value;
-        union {
-            unsigned char buffer[2];
-            short shortVal;
-        } u;
-
-        f = __FILEVal(fp);
-        _buffered = (__INST(buffered) == true);
-        if (_buffered) {
-            __READING__(f)
-        }
-        __READBYTES__(ret, f, u.buffer, 2, _buffered);
-
-        if (ret == 2) {
-            OBJ pos;
-
-            if ((pos = __INST(position)) != nil) {
-                __INST(position) = __MKSMALLINT(__intVal(pos) + 2);
-            }
-            if (msbFlag == true) {
+	FILEPOINTER f;
+	int ret, _buffered;
+	short value;
+	union {
+	    unsigned char buffer[2];
+	    short shortVal;
+	} u;
+
+	f = __FILEVal(fp);
+	_buffered = (__INST(buffered) == true);
+	if (_buffered) {
+	    __READING__(f)
+	}
+	__READBYTES__(ret, f, u.buffer, 2, _buffered);
+
+	if (ret == 2) {
+	    OBJ pos;
+
+	    if ((pos = __INST(position)) != nil) {
+		__INST(position) = __MKSMALLINT(__intVal(pos) + 2);
+	    }
+	    if (msbFlag == true) {
 #if defined(__MSBFIRST)
-                value = u.shortVal;
+		value = u.shortVal;
 #else
-                value = ((u.buffer[0] & 0xFF) << 8) | (u.buffer[1] & 0xFF);
+		value = ((u.buffer[0] & 0xFF) << 8) | (u.buffer[1] & 0xFF);
 #endif
-            } else {
+	    } else {
 #if defined(__LSBFIRST)
-                value = u.shortVal;
+		value = u.shortVal;
 #else
-                value = ((u.buffer[1] & 0xFF) << 8) | (u.buffer[0] & 0xFF);
+		value = ((u.buffer[1] & 0xFF) << 8) | (u.buffer[0] & 0xFF);
 #endif
-            }
-            RETURN (__MKSMALLINT(value));
-        }
-
-        if (ret < 0) {
-            __INST(position) = nil;
-            __INST(lastErrorNumber) = __MKSMALLINT(errno);
-        } else /* ret == 0 */ {
-            __INST(hitEOF) = true;
-        }
+	    }
+	    RETURN (__MKSMALLINT(value));
+	}
+
+	if (ret < 0) {
+	    __INST(position) = nil;
+	    __INST(lastErrorNumber) = __MKSMALLINT(errno);
+	} else /* ret == 0 */ {
+	    __INST(hitEOF) = true;
+	}
     }
 %}.
     hitEOF ifTrue:[^ self pastEnd].
@@ -2892,65 +2895,65 @@
 
     __INST(lastErrorNumber) = nil;
     if (((fp = __INST(filePointer)) != nil)
-        && (__INST(mode) != @symbol(writeonly))
+	&& (__INST(mode) != @symbol(writeonly))
     ) {
-        FILEPOINTER f;
-        int ret, _buffered;
-        unsigned INT value;
-        union {
-            unsigned char buffer[4];
-            unsigned int intVal;
-        } u;
-
-        f = __FILEVal(fp);
-        _buffered = (__INST(buffered) == true);
-        if (_buffered) {
-            __READING__(f)
-        }
-        __READBYTES__(ret, f, u.buffer, 4, _buffered);
-
-        if (ret == 4) {
-            OBJ pos;
-
-            if ((pos = __INST(position)) != nil) {
-                __INST(position) = __MKSMALLINT(__intVal(pos) + 4);
-            }
-            if (msbFlag == true) {
+	FILEPOINTER f;
+	int ret, _buffered;
+	unsigned INT value;
+	union {
+	    unsigned char buffer[4];
+	    unsigned int intVal;
+	} u;
+
+	f = __FILEVal(fp);
+	_buffered = (__INST(buffered) == true);
+	if (_buffered) {
+	    __READING__(f)
+	}
+	__READBYTES__(ret, f, u.buffer, 4, _buffered);
+
+	if (ret == 4) {
+	    OBJ pos;
+
+	    if ((pos = __INST(position)) != nil) {
+		__INST(position) = __MKSMALLINT(__intVal(pos) + 4);
+	    }
+	    if (msbFlag == true) {
 #if defined(__MSBFIRST)
-                value = u.intVal;
+		value = u.intVal;
 #else
-                value = u.buffer[0];
-                value = (value << 8) | u.buffer[1];
-                value = (value << 8) | u.buffer[2];
-                value = (value << 8) | u.buffer[3];
+		value = u.buffer[0];
+		value = (value << 8) | u.buffer[1];
+		value = (value << 8) | u.buffer[2];
+		value = (value << 8) | u.buffer[3];
 #endif
-            } else {
+	    } else {
 #if defined(__LSBFIRST)
-                value = u.intVal;
+		value = u.intVal;
 #else
-                value = u.buffer[3];
-                value = (value << 8) | u.buffer[2];
-                value = (value << 8) | u.buffer[1];
-                value = (value << 8) | u.buffer[0];
+		value = u.buffer[3];
+		value = (value << 8) | u.buffer[2];
+		value = (value << 8) | u.buffer[1];
+		value = (value << 8) | u.buffer[0];
 #endif
-            }
+	    }
 #ifdef alpha64
-            value &= 0xFFFFFFFF;
-            RETURN (__MKSMALLINT(value));
+	    value &= 0xFFFFFFFF;
+	    RETURN (__MKSMALLINT(value));
 #else
-            if (value <= _MAX_INT) {
-                RETURN (__MKSMALLINT(value));
-            }
-            RETURN (__MKULARGEINT(value) );
+	    if (value <= _MAX_INT) {
+		RETURN (__MKSMALLINT(value));
+	    }
+	    RETURN (__MKULARGEINT(value) );
 #endif
-        }
-
-        if (ret < 0) {
-            __INST(position) = nil;
-            __INST(lastErrorNumber) = __MKSMALLINT(errno);
-        } else /* ret == 0 */ {
-            __INST(hitEOF) = true;
-        }
+	}
+
+	if (ret < 0) {
+	    __INST(position) = nil;
+	    __INST(lastErrorNumber) = __MKSMALLINT(errno);
+	} else /* ret == 0 */ {
+	    __INST(hitEOF) = true;
+	}
     }
 %}.
     hitEOF ifTrue:[^ self pastEnd].
@@ -2971,51 +2974,51 @@
 
     __INST(lastErrorNumber) = nil;
     if (((fp = __INST(filePointer)) != nil)
-        && (__INST(mode) != @symbol(writeonly))
+	&& (__INST(mode) != @symbol(writeonly))
     ) {
-        FILEPOINTER f;
-        int ret, _buffered;
-        unsigned int value;
-        union {
-            unsigned char buffer[2];
-            unsigned short shortVal;
-        } u;
-
-        f = __FILEVal(fp);
-        _buffered = (__INST(buffered) == true);
-        if (_buffered) {
-            __READING__(f)
-        }
-        __READBYTES__(ret, f, u.buffer, 2, _buffered);
-
-        if (ret == 2) {
-            OBJ pos;
-
-            if ((pos = __INST(position)) != nil) {
-                __INST(position) = __MKSMALLINT(__intVal(pos) + 2);
-            }
-            if (msbFlag == true) {
+	FILEPOINTER f;
+	int ret, _buffered;
+	unsigned int value;
+	union {
+	    unsigned char buffer[2];
+	    unsigned short shortVal;
+	} u;
+
+	f = __FILEVal(fp);
+	_buffered = (__INST(buffered) == true);
+	if (_buffered) {
+	    __READING__(f)
+	}
+	__READBYTES__(ret, f, u.buffer, 2, _buffered);
+
+	if (ret == 2) {
+	    OBJ pos;
+
+	    if ((pos = __INST(position)) != nil) {
+		__INST(position) = __MKSMALLINT(__intVal(pos) + 2);
+	    }
+	    if (msbFlag == true) {
 #if defined(__MSBFIRST)
-                value = u.shortVal;
+		value = u.shortVal;
 #else
-                value = (u.buffer[0] << 8) | u.buffer[1];
+		value = (u.buffer[0] << 8) | u.buffer[1];
 #endif
-            } else {
+	    } else {
 #if defined(__LSBFIRST)
-                value = u.shortVal;
+		value = u.shortVal;
 #else
-                value = (u.buffer[1] << 8) | u.buffer[0];
+		value = (u.buffer[1] << 8) | u.buffer[0];
 #endif
-            }
-            RETURN (__MKSMALLINT(value));
-        }
-
-        if (ret < 0) {
-            __INST(position) = nil;
-            __INST(lastErrorNumber) = __MKSMALLINT(errno);
-        } else /* ret == 0 */ {
-            __INST(hitEOF) = true;
-        }
+	    }
+	    RETURN (__MKSMALLINT(value));
+	}
+
+	if (ret < 0) {
+	    __INST(position) = nil;
+	    __INST(lastErrorNumber) = __MKSMALLINT(errno);
+	} else /* ret == 0 */ {
+	    __INST(hitEOF) = true;
+	}
     }
 %}.
     hitEOF ifTrue:[^ self pastEnd].
@@ -3176,8 +3179,8 @@
 %{
     int num;
     union {
-        char bytes[4];
-        int intVal;
+	char bytes[4];
+	int intVal;
     } u;
     FILEPOINTER f;
     int cnt, _buffered;
@@ -3185,62 +3188,62 @@
 
     __INST(lastErrorNumber) = nil;
     if (__isSmallInteger(aNumber)) {
-        num = __intVal(aNumber);
+	num = __intVal(aNumber);
     } else {
 #ifdef alpha64
-        goto badArg;
+	goto badArg;
 #else
-        num = __longIntVal(aNumber);
-        if (num == 0) {
-            num = __signedLongIntVal(aNumber);
-            if (num == 0) {
-                /* bad arg or out-of-range integer  
-                 * (handled by the fallBack code)
-                 */
-                goto badArg;
-            }
-        }
+	num = __longIntVal(aNumber);
+	if (num == 0) {
+	    num = __signedLongIntVal(aNumber);
+	    if (num == 0) {
+		/* bad arg or out-of-range integer  
+		 * (handled by the fallBack code)
+		 */
+		goto badArg;
+	    }
+	}
 #endif
     }
 
     if (((fp = __INST(filePointer)) != nil)
      && (__INST(mode) != @symbol(readonly))
     ) {
-        if (msbFlag == true) {
+	if (msbFlag == true) {
 #if defined(__MSBFIRST)
-            u.intVal = num;
+	    u.intVal = num;
 #else
-            u.bytes[0] = (num >> 24) & 0xFF;
-            u.bytes[1] = (num >> 16) & 0xFF;
-            u.bytes[2] = (num >> 8) & 0xFF;
-            u.bytes[3] = num & 0xFF;
+	    u.bytes[0] = (num >> 24) & 0xFF;
+	    u.bytes[1] = (num >> 16) & 0xFF;
+	    u.bytes[2] = (num >> 8) & 0xFF;
+	    u.bytes[3] = num & 0xFF;
 #endif
-        } else {
+	} else {
 #if defined(__LSBFIRST)
-            u.intVal = num;
+	    u.intVal = num;
 #else
-            u.bytes[3] = (num >> 24) & 0xFF;
-            u.bytes[2] = (num >> 16) & 0xFF;
-            u.bytes[1] = (num >> 8) & 0xFF;
-            u.bytes[0] = num & 0xFF;
+	    u.bytes[3] = (num >> 24) & 0xFF;
+	    u.bytes[2] = (num >> 16) & 0xFF;
+	    u.bytes[1] = (num >> 8) & 0xFF;
+	    u.bytes[0] = num & 0xFF;
 #endif
-        }
-
-        f = __FILEVal(fp);
-        if (_buffered = (__INST(buffered) == true)) {
-            __WRITING__(f)
-        } 
-        __WRITEBYTES__(cnt, f, u.bytes, 4, _buffered);
-
-        if (cnt == 4) {
-            OBJ pos;
-
-            if ((pos = __INST(position)) != nil) {
-                __INST(position) = __MKSMALLINT(__intVal(pos) + 4);
-            }
-            RETURN ( self );
-        }
-        __INST(lastErrorNumber) = __MKSMALLINT(errno);
+	}
+
+	f = __FILEVal(fp);
+	if (_buffered = (__INST(buffered) == true)) {
+	    __WRITING__(f)
+	} 
+	__WRITEBYTES__(cnt, f, u.bytes, 4, _buffered);
+
+	if (cnt == 4) {
+	    OBJ pos;
+
+	    if ((pos = __INST(position)) != nil) {
+		__INST(position) = __MKSMALLINT(__intVal(pos) + 4);
+	    }
+	    RETURN ( self );
+	}
+	__INST(lastErrorNumber) = __MKSMALLINT(errno);
     }
 badArg: ;
 %}.
@@ -3249,7 +3252,7 @@
     lastErrorNumber notNil ifTrue:[self writeError. ^ self].
 
     aNumber isInteger ifTrue:[
-        ^ super nextPutLong:aNumber MSB:msbFlag
+	^ super nextPutLong:aNumber MSB:msbFlag
     ].
     self argumentMustBeInteger
 !
@@ -3263,8 +3266,8 @@
 %{
     int num;
     union {
-        char bytes[2];
-        short shortVal;
+	char bytes[2];
+	short shortVal;
     } u;
 
     FILEPOINTER f;
@@ -3273,41 +3276,41 @@
 
     __INST(lastErrorNumber) = nil;
     if (((fp = __INST(filePointer)) != nil)
-        && (__INST(mode) != @symbol(readonly))
-        && __isSmallInteger(aNumber)
+	&& (__INST(mode) != @symbol(readonly))
+	&& __isSmallInteger(aNumber)
     ) {
-        num = __intVal(aNumber);
-        if (msbFlag == true) {
+	num = __intVal(aNumber);
+	if (msbFlag == true) {
 #if defined(__MSBFIRST)
-            u.shortVal = num;
+	    u.shortVal = num;
 #else
-            u.bytes[0] = (num >> 8) & 0xFF;
-            u.bytes[1] = num & 0xFF;
+	    u.bytes[0] = (num >> 8) & 0xFF;
+	    u.bytes[1] = num & 0xFF;
 #endif
-        } else {
+	} else {
 #if defined(__LSBFIRST)
-            u.shortVal = num;
+	    u.shortVal = num;
 #else
-            u.bytes[1] = (num >> 8) & 0xFF;
-            u.bytes[0] = num & 0xFF;
+	    u.bytes[1] = (num >> 8) & 0xFF;
+	    u.bytes[0] = num & 0xFF;
 #endif
-        }
-
-        f = __FILEVal(fp);
-        if (_buffered = (__INST(buffered) == true)) {
-            __WRITING__(f)
-        } 
-        __WRITEBYTES__(cnt, f, u.bytes, 2, _buffered);
-
-        if (cnt == 2) {
-            OBJ pos;
-
-            if ((pos = __INST(position)) != nil) {
-                __INST(position) = __MKSMALLINT(__intVal(pos) + 2);
-            }
-            RETURN ( self );
-        }
-        __INST(lastErrorNumber) = __MKSMALLINT(errno);
+	}
+
+	f = __FILEVal(fp);
+	if (_buffered = (__INST(buffered) == true)) {
+	    __WRITING__(f)
+	} 
+	__WRITEBYTES__(cnt, f, u.bytes, 2, _buffered);
+
+	if (cnt == 2) {
+	    OBJ pos;
+
+	    if ((pos = __INST(position)) != nil) {
+		__INST(position) = __MKSMALLINT(__intVal(pos) + 2);
+	    }
+	    RETURN ( self );
+	}
+	__INST(lastErrorNumber) = __MKSMALLINT(errno);
     }
 %}.
     lastErrorNumber notNil ifTrue:[^ self writeError. ^ self].
@@ -3340,26 +3343,26 @@
 
     if (__isSmallInteger(aFileDescriptor) 
      && (__qClass(openmode)== @global(String))) {
-        f = (FILEPOINTER) fdopen(__intVal(aFileDescriptor), (char *)__stringVal(openmode));
-        if (f == NULL) {
-            __INST(lastErrorNumber) = __MKSMALLINT(errno);
-            __INST(position) = nil;
-        } else {
-            __INST(filePointer) = fp = __MKFILEPOINTER(f); __STORE(self, fp);
-            __INST(position) = __MKSMALLINT(1);
-            retVal = self;
-        }
+	f = (FILEPOINTER) fdopen(__intVal(aFileDescriptor), (char *)__stringVal(openmode));
+	if (f == NULL) {
+	    __INST(lastErrorNumber) = __MKSMALLINT(errno);
+	    __INST(position) = nil;
+	} else {
+	    __INST(filePointer) = fp = __MKFILEPOINTER(f); __STORE(self, fp);
+	    __INST(position) = __MKSMALLINT(1);
+	    retVal = self;
+	}
     }
 %}.
     retVal notNil ifTrue:[
-        buffered := true.       "default is buffered"
-        Lobby register:self
+	buffered := true.       "default is buffered"
+	Lobby register:self
     ].
     lastErrorNumber notNil ifTrue:[
-        "
-         the open failed for some reason ...
-        "
-        ^ self openError
+	"
+	 the open failed for some reason ...
+	"
+	^ self openError
     ].
     ^ retVal
 !
@@ -3376,24 +3379,24 @@
     OBJ fp;
 
     if (__isString(aPath)) { 
-        __BEGIN_INTERRUPTABLE__
-        do {
-            f = fopen((char *) __stringVal(aPath), (char *) __stringVal(mode));
-        } while ((f == NULL) && (errno == EINTR));
-        __END_INTERRUPTABLE__
-        if (f == NULL) {
-            __INST(lastErrorNumber) = __MKSMALLINT(errno);
-        } else {
-            __INST(filePointer) = fp = __MKFILEPOINTER(f); __STORE(self, fp);
-            ok = true;
-        }
+	__BEGIN_INTERRUPTABLE__
+	do {
+	    f = fopen((char *) __stringVal(aPath), (char *) __stringVal(mode));
+	} while ((f == NULL) && (errno == EINTR));
+	__END_INTERRUPTABLE__
+	if (f == NULL) {
+	    __INST(lastErrorNumber) = __MKSMALLINT(errno);
+	} else {
+	    __INST(filePointer) = fp = __MKFILEPOINTER(f); __STORE(self, fp);
+	    ok = true;
+	}
     }
 %}.
     ok ifFalse:[
-        "
-         the open failed for some reason ...
-        "
-        ^ self openError
+	"
+	 the open failed for some reason ...
+	"
+	^ self openError
     ].
     position := 1.
     Lobby register:self. 
@@ -4867,6 +4870,6 @@
 !ExternalStream class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/ExternalStream.st,v 1.196 1999-08-04 14:12:48 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/ExternalStream.st,v 1.197 1999-08-17 10:15:44 cg Exp $'
 ! !
 ExternalStream initialize!
--- a/ExternalStream_win32.st	Thu Aug 12 12:33:40 1999 +0200
+++ b/ExternalStream_win32.st	Tue Aug 17 12:15:45 1999 +0200
@@ -2211,9 +2211,12 @@
 	"/ concatenation in your exception handler (the receiver and the partial
 	"/ line are passed as parameter)
 
-	^ LineTooLongErrorSignal
-	    raiseRequestWith:(Array with:self with:line)
-		 errorString:('line too long read error')
+	LineTooLongErrorSignal isHandled ifTrue:[
+	    ^ LineTooLongErrorSignal
+		raiseRequestWith:(Array with:self with:line)
+		     errorString:('line too long read error')
+	].
+	^ line , self nextLine
     ].
 
     hitEOF ifTrue:[^ self pastEnd].
@@ -5051,6 +5054,6 @@
 !ExternalStream class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Attic/ExternalStream_win32.st,v 1.13 1999-07-10 10:39:25 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Attic/ExternalStream_win32.st,v 1.14 1999-08-17 10:15:45 cg Exp $'
 ! !
 ExternalStream initialize!