ExternalStream.st
branchjv
changeset 17763 019bb9c842c5
parent 17761 b0e5971141bc
child 17767 a4a32df3aa5e
--- a/ExternalStream.st	Thu Apr 29 16:55:35 2010 +0100
+++ b/ExternalStream.st	Tue May 04 12:50:05 2010 +0100
@@ -2522,7 +2522,7 @@
 
     |line|
 
-%{  /* STACK:34000 */
+%{  /* STACK:100000 */
 
     FILEPOINTER f;
     int len, ret;
@@ -2539,123 +2539,123 @@
      || (__INST(handleType) == @symbol(filePointer))
      || (__INST(handleType) == @symbol(socketFilePointer))
      || (__INST(handleType) == @symbol(pipeFilePointer))) {
-	if (((fp = __INST(handle)) != nil)
-	    && (__INST(mode) != @symbol(writeonly))
-	    && (__INST(binary) != true)
-	) {
-	    f = __FILEVal(fp);
-	    buffer[0] = '\0';
-
-	    _buffered = (__INST(buffered) == true);
-	    if (_buffered) {
-		__READING__(f);
-	    }
-
-	    rslt = nextPtr = buffer;
-	    limit = buffer + sizeof(buffer) - 2;
-
-	    for (;;) {
-		__READBYTE__(ret, f, nextPtr, _buffered, __INST(handleType));
-		if (ret <= 0) {
-		    if (nextPtr == buffer)
-			rslt = NULL;
-		    if (ret == 0) {
-			__INST(hitEOF) = true;
-			break;
-		    } else {
-			__INST(lastErrorNumber) = __mkSmallInteger(__threadErrno);
-			goto err;
-		    }
-		}
-
-		if (*nextPtr == '\n') {
-		    cutOff = 1;
-		    *nextPtr = '\0';
-		    break;
-		}
-		if (*nextPtr == '\r') {
-		    char peekChar;
-
-		    /*
-		     * peek ahead for a newLine ...
-		     */
-		    __READBYTE__(ret, f, &peekChar, _buffered, __INST(handleType));
-		    if (ret <= 0) {
-			cutOff = 1;
-			*nextPtr = '\0';
-			if (ret == 0) {
-			    __INST(hitEOF) = true;
-			    break;
-			}
-			__INST(lastErrorNumber) = __mkSmallInteger(__threadErrno);
-			goto err;
-		    }
-
-		    if (peekChar == '\n') {
-			cutOff = 2;
-			*nextPtr = '\0';
-			break;
-		    }
-
-		    __UNGETC__(peekChar, f, _buffered);
-
-		    cutOff = 1;
-		    *nextPtr = '\0';
-		    break;
-		}
-
-		nextPtr++;
-		if (nextPtr >= limit) {
-		    *nextPtr = '\0';
-		    lineTooLong = 1;
-		    if (@global(InfoPrinting) == true) {
-			fprintf(stderr, "ExtStream [warning]: line truncated in nextLine\n");
-		    }
-		    break;
-		}
-	    }
-
-	    if (rslt != NULL) {
-		len = nextPtr-buffer;
-
-		if (__isSmallInteger(__INST(position))) {
-		    INT np = __intVal(__INST(position)) + len + cutOff;
-		    OBJ t;
-
-		    t = __MKINT(np); __INST(position) = t; __STORE(self, t);
-		} else {
-		    __INST(position) = nil; /* i.e. do not know */
-		}
-		/* remove any EOL character */
-		if (len != 0) {
-		    if (buffer[len-1] == '\n') {
-			buffer[--len] = '\0';
-		    }
-		    if ((len != 0) && (buffer[len-1] == '\r')) {
-			buffer[--len] = '\0';
-		    }
-		}
-		line = __MKSTRING_L(buffer, len);
-		if (! lineTooLong) {
-		    RETURN ( line );
-		}
-	    }
-	}
+        if (((fp = __INST(handle)) != nil)
+            && (__INST(mode) != @symbol(writeonly))
+            && (__INST(binary) != true)
+        ) {
+            f = __FILEVal(fp);
+            buffer[0] = '\0';
+
+            _buffered = (__INST(buffered) == true);
+            if (_buffered) {
+                __READING__(f);
+            }
+
+            rslt = nextPtr = buffer;
+            limit = buffer + sizeof(buffer) - 2;
+
+            for (;;) {
+                __READBYTE__(ret, f, nextPtr, _buffered, __INST(handleType));
+                if (ret <= 0) {
+                    if (nextPtr == buffer)
+                        rslt = NULL;
+                    if (ret == 0) {
+                        __INST(hitEOF) = true;
+                        break;
+                    } else {
+                        __INST(lastErrorNumber) = __mkSmallInteger(__threadErrno);
+                        goto err;
+                    }
+                }
+
+                if (*nextPtr == '\n') {
+                    cutOff = 1;
+                    *nextPtr = '\0';
+                    break;
+                }
+                if (*nextPtr == '\r') {
+                    char peekChar;
+
+                    /*
+                     * peek ahead for a newLine ...
+                     */
+                    __READBYTE__(ret, f, &peekChar, _buffered, __INST(handleType));
+                    if (ret <= 0) {
+                        cutOff = 1;
+                        *nextPtr = '\0';
+                        if (ret == 0) {
+                            __INST(hitEOF) = true;
+                            break;
+                        }
+                        __INST(lastErrorNumber) = __mkSmallInteger(__threadErrno);
+                        goto err;
+                    }
+
+                    if (peekChar == '\n') {
+                        cutOff = 2;
+                        *nextPtr = '\0';
+                        break;
+                    }
+
+                    __UNGETC__(peekChar, f, _buffered);
+
+                    cutOff = 1;
+                    *nextPtr = '\0';
+                    break;
+                }
+
+                nextPtr++;
+                if (nextPtr >= limit) {
+                    *nextPtr = '\0';
+                    lineTooLong = 1;
+                    if (@global(InfoPrinting) == true) {
+                        fprintf(stderr, "ExtStream [warning]: line truncated in nextLine\n");
+                    }
+                    break;
+                }
+            }
+
+            if (rslt != NULL) {
+                len = nextPtr-buffer;
+
+                if (__isSmallInteger(__INST(position))) {
+                    INT np = __intVal(__INST(position)) + len + cutOff;
+                    OBJ t;
+
+                    t = __MKINT(np); __INST(position) = t; __STORE(self, t);
+                } else {
+                    __INST(position) = nil; /* i.e. do not know */
+                }
+                /* remove any EOL character */
+                if (len != 0) {
+                    if (buffer[len-1] == '\n') {
+                        buffer[--len] = '\0';
+                    }
+                    if ((len != 0) && (buffer[len-1] == '\r')) {
+                        buffer[--len] = '\0';
+                    }
+                }
+                line = __MKSTRING_L(buffer, len);
+                if (! lineTooLong) {
+                    RETURN ( line );
+                }
+            }
+        }
     }
 err: ;
 %}.
     line notNil ifTrue:[
-	"/ the line as read is longer than 32k characters (boy - what a line)
-	"/ The exception could be handled by reading more and returning the
-	"/ concatenation in your exception handler (the receiver and the partial
-	"/ line are passed as parameter)
-
-	LineTooLongErrorSignal isHandled ifTrue:[
-	    ^ LineTooLongErrorSignal
-		raiseRequestWith:(Array with:self with:line)
-		     errorString:('line too long read error')
-	].
-	^ line , self nextLine
+        "/ the line as read is longer than 32k characters (boy - what a line)
+        "/ The exception could be handled by reading more and returning the
+        "/ concatenation in your exception handler (the receiver and the partial
+        "/ line are passed as parameter)
+
+        LineTooLongErrorSignal isHandled ifTrue:[
+            ^ LineTooLongErrorSignal
+                raiseRequestWith:(Array with:self with:line)
+                     errorString:('line too long read error')
+        ].
+        ^ line , self nextLine
     ].
 
     (hitEOF == true) ifTrue:[^ self pastEndRead].
@@ -5691,15 +5691,16 @@
 !ExternalStream class methodsFor:'documentation'!
 
 version
-    ^ '$Id: ExternalStream.st 10517 2010-04-26 18:26:38Z vranyj1 $'
+    ^ '$Id: ExternalStream.st 10520 2010-05-04 11:50:05Z vranyj1 $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/ExternalStream.st,v 1.340 2010/02/09 14:23:16 stefan Exp §'
+    ^ 'Header: /cvs/stx/stx/libbasic/ExternalStream.st,v 1.341 2010/04/12 19:27:17 stefan Exp §'
 !
 
 version_SVN
-    ^ '$Id: ExternalStream.st 10517 2010-04-26 18:26:38Z vranyj1 $'
+    ^ '$Id: ExternalStream.st 10520 2010-05-04 11:50:05Z vranyj1 $'
 ! !
 
 ExternalStream initialize!
+