#BUGFIX by stefan
authorStefan Vogel <sv@exept.de>
Thu, 22 Nov 2018 15:09:28 +0100
changeset 23538 1266c7e94014
parent 23537 97943007572e
child 23539 d41c73151593
#BUGFIX by stefan class: ExternalStream changed:31 methods Windows: extract the correct error number via GetLastError()
ExternalStream.st
--- a/ExternalStream.st	Wed Nov 21 17:25:53 2018 +0100
+++ b/ExternalStream.st	Thu Nov 22 15:09:28 2018 +0100
@@ -1,3 +1,5 @@
+"{ Encoding: utf8 }"
+
 "
  COPYRIGHT (c) 1988 by Claus Gittinger
 	      All Rights Reserved
@@ -2781,6 +2783,9 @@
                         __INST(hitEOF) = true;
                         break;
                     } else {
+# ifdef __win32__
+                        __threadErrno = __WIN32_ERR(GetLastError());
+# endif
                         error = __mkSmallInteger(__threadErrno);
                         goto err;
                     }
@@ -2805,6 +2810,9 @@
                             __INST(hitEOF) = true;
                             break;
                         }
+# ifdef __win32__
+                        __threadErrno = __WIN32_ERR(GetLastError());
+# endif
                         error = __mkSmallInteger(__threadErrno);
                         goto err;
                     }
@@ -2885,6 +2893,8 @@
     (mode == #writeonly) ifTrue:[^ self errorWriteOnly].
     binary ifTrue:[^ self errorBinary].
     ^ super nextLine
+
+    "Modified: / 22-11-2018 / 14:46:40 / Stefan Vogel"
 !
 
 nextPutLine:aString
@@ -2901,76 +2911,81 @@
      || (__INST(handleType) == @symbol(socketFilePointer))
      || (__INST(handleType) == @symbol(socketHandle))
      || (__INST(handleType) == @symbol(pipeFilePointer))) {
-	if (((fp = __INST(handle)) != nil)
-	    && (__INST(mode) != @symbol(readonly))
-	    && (__INST(binary) != true)
-	    && __isStringLike(aString)
-	) {
-	    int _buffered = (__INST(buffered) == true);
-	    int len = __stringSize(aString);
-	    int cnt, len1;
-	    FILEPOINTER f = __FILEVal(fp);
-	    char *cp;
-	    int o_offs;
-
-	    if (_buffered) {
-		__WRITING__(f)
-	    }
+        if (((fp = __INST(handle)) != nil)
+            && (__INST(mode) != @symbol(readonly))
+            && (__INST(binary) != true)
+            && __isStringLike(aString)
+        ) {
+            int _buffered = (__INST(buffered) == true);
+            int len = __stringSize(aString);
+            int cnt, len1;
+            FILEPOINTER f = __FILEVal(fp);
+            char *cp;
+            int o_offs;
+
+            if (_buffered) {
+                __WRITING__(f)
+            }
 #ifdef __win32__
-	    if ((f == __win32_stdout()) || (f == __win32_stderr())) {
-		cnt = __win32_fwrite(__stringVal(aString), 1, len, f);
-	    } else
+            if ((f == __win32_stdout()) || (f == __win32_stderr())) {
+                cnt = __win32_fwrite(__stringVal(aString), 1, len, f);
+            } else
 #endif
-	    {
-		o_offs = (char *)__stringVal(aString)-(char *)aString;
-		__WRITEBYTES_OBJ__(cnt, f, aString, o_offs, len, _buffered, __INST(handleType));
-	    }
-	    if (cnt == len) {
-		OBJ mode = __INST(eolMode);
-
-		len1 = len;
-
-		if (mode == @symbol(cr)) {
-		    cp = "\r"; len = 1;
-		} else if (mode == @symbol(crlf)) {
-		    cp = "\r\n"; len = 2;
-		} else if (mode == @symbol(eot)) {
-		    cp = "\004"; len = 1;
-		} else if (mode == @symbol(etx)) {
-		    cp = "\003"; len = 1;
-		} else {
-		    cp = "\n"; len = 1;
-		}
+            {
+                o_offs = (char *)__stringVal(aString)-(char *)aString;
+                __WRITEBYTES_OBJ__(cnt, f, aString, o_offs, len, _buffered, __INST(handleType));
+            }
+            if (cnt == len) {
+                OBJ mode = __INST(eolMode);
+
+                len1 = len;
+
+                if (mode == @symbol(cr)) {
+                    cp = "\r"; len = 1;
+                } else if (mode == @symbol(crlf)) {
+                    cp = "\r\n"; len = 2;
+                } else if (mode == @symbol(eot)) {
+                    cp = "\004"; len = 1;
+                } else if (mode == @symbol(etx)) {
+                    cp = "\003"; len = 1;
+                } else {
+                    cp = "\n"; len = 1;
+                }
 #ifdef __win32__
-		if ((f == __win32_stdout()) || (f == __win32_stderr())) {
-		    cnt = __win32_fwrite(cp, 1, len, f);
-		} else
+                if ((f == __win32_stdout()) || (f == __win32_stderr())) {
+                    cnt = __win32_fwrite(cp, 1, len, f);
+                } else
 #endif
-		{
-		    __WRITEBYTES__(cnt, f, cp, len, _buffered, __INST(handleType));
-		}
-		if (cnt > 0) {
-		    if (__isSmallInteger(__INST(position))) {
-			INT np = __intVal(__INST(position)) + len1 + cnt;
-			OBJ t;
-
-			t = __MKINT(np); __INST(position) = t; __STORE(self, t);
-		    } else {
-			__INST(position) = nil; /* i.e. do not know */
-		    }
-		    RETURN ( self );
-		}
-	    }
-	    error = __mkSmallInteger(__threadErrno);
-	}
+                {
+                    __WRITEBYTES__(cnt, f, cp, len, _buffered, __INST(handleType));
+                }
+                if (cnt > 0) {
+                    if (__isSmallInteger(__INST(position))) {
+                        INT np = __intVal(__INST(position)) + len1 + cnt;
+                        OBJ t;
+
+                        t = __MKINT(np); __INST(position) = t; __STORE(self, t);
+                    } else {
+                        __INST(position) = nil; /* i.e. do not know */
+                    }
+                    RETURN ( self );
+                }
+            }
+# ifdef __win32__
+            __threadErrno = __WIN32_ERR(GetLastError());
+# endif
+            error = __mkSmallInteger(__threadErrno);
+        }
     }
 %}.
     error notNil ifTrue:[
-	lastErrorNumber := error.
-	self writeError:error.
-	^ self
+        lastErrorNumber := error.
+        self writeError:error.
+        ^ self
     ].
     super nextPutLine:aString.
+
+    "Modified: / 22-11-2018 / 14:48:48 / Stefan Vogel"
 !
 
 nextPutLinesFrom:aStream upToLineStartingWith:aStringOrNil
@@ -3173,69 +3188,74 @@
     OBJ fp = __INST(handle);
 
     if (fp == nil)
-	goto out;
+        goto out;
 
     if (!__isInteger(ioctlNumber)
-	 || (!__isInteger(arg)
-	     && (arg != nil)
-	     && !__isBytes(arg)
-	     && !__isExternalBytesLike(arg)
-	     && !__isExternalAddress(arg))) {
-	error = @symbol(badArgument);
-	goto out;
+         || (!__isInteger(arg)
+             && (arg != nil)
+             && !__isBytes(arg)
+             && !__isExternalBytesLike(arg)
+             && !__isExternalAddress(arg))) {
+        error = @symbol(badArgument);
+        goto out;
     }
 
     if (__INST(handleType) == @symbol(socketHandle)) {
-	fd = (int)((SOCKET)(__FILEVal(fp)));
+        fd = (int)((SOCKET)(__FILEVal(fp)));
     } else
-	if ((__INST(handleType) == nil)
-	 || (__INST(handleType) == @symbol(filePointer))
-	 || (__INST(handleType) == @symbol(socketFilePointer))
-	 || (__INST(handleType) == @symbol(pipeFilePointer))) {
-	fd = fileno(__FILEVal(fp));
+        if ((__INST(handleType) == nil)
+         || (__INST(handleType) == @symbol(filePointer))
+         || (__INST(handleType) == @symbol(socketFilePointer))
+         || (__INST(handleType) == @symbol(pipeFilePointer))) {
+        fd = fileno(__FILEVal(fp));
     } else {
-	error = @symbol(badHandleType);
-	goto out;
+        error = @symbol(badHandleType);
+        goto out;
     }
 
     ioNum = __unsignedLongIntVal(ioctlNumber);
 
     __BEGIN_INTERRUPTABLE__
     do {
-	__threadErrno = 0;
-	if (arg == nil) {
-	    ioArg = 0;
-	} else if (__isSmallInteger(arg)) {
-	    ioArg = __intVal(arg);
-	} else if (__isInteger(arg)) {
-	    ioArg = __unsignedLongIntVal(arg);
-	} else if (__isExternalBytesLike(arg)) {
-	    ioArg = (INT)(__externalBytesAddress(arg));
-	} else if (__isExternalAddress(arg)) {
-	    ioArg = (INT)(__externalAddressVal(arg));
-	} else {
-	    ioArg = (INT)(__ByteArrayInstPtr(arg)->ba_element);
-	}
-	ret = ioctl(fd, ioNum, ioArg);
+        __threadErrno = 0;
+        if (arg == nil) {
+            ioArg = 0;
+        } else if (__isSmallInteger(arg)) {
+            ioArg = __intVal(arg);
+        } else if (__isInteger(arg)) {
+            ioArg = __unsignedLongIntVal(arg);
+        } else if (__isExternalBytesLike(arg)) {
+            ioArg = (INT)(__externalBytesAddress(arg));
+        } else if (__isExternalAddress(arg)) {
+            ioArg = (INT)(__externalAddressVal(arg));
+        } else {
+            ioArg = (INT)(__ByteArrayInstPtr(arg)->ba_element);
+        }
+        ret = ioctl(fd, ioNum, ioArg);
     } while (ret < 0 && __threadErrno == EINTR);
     __END_INTERRUPTABLE__
 
     if (ret >= 0) {
-	RETURN ( __mkSmallInteger(ret) );
+        RETURN ( __mkSmallInteger(ret) );
     }
+# ifdef __win32__
+            __threadErrno = __WIN32_ERR(GetLastError());
+# endif
     error = __mkSmallInteger(__threadErrno);
 #endif
 
 out:;
 %}.
     error notNil ifTrue:[
-	lastErrorNumber := error.
-	^ self ioError:error.
+        lastErrorNumber := error.
+        ^ self ioError:error.
     ].
     handle isNil ifTrue:[^ self errorNotOpen].
 
     "/ the system does not support ioctl (MSDOS or VMS)
     ^ self errorUnsupportedOperation
+
+    "Modified: / 22-11-2018 / 14:42:04 / Stefan Vogel"
 !
 
 reset
@@ -3264,39 +3284,40 @@
     OBJ fp = __INST(handle);
 
     if (fp == nil)
-	goto out;
+        goto out;
 
     if (__INST(handleType) == @symbol(socketHandle)) {
-	// syncing a socket to disk ?
-	error = @symbol(badHandleType);
-	goto out;
-	// fd = __FILEVal(fp);
+        // syncing a socket to disk ?
+        error = @symbol(badHandleType);
+        goto out;
+        // fd = __FILEVal(fp);
     } else
-	if ((__INST(handleType) == nil)
-	       || (__INST(handleType) == @symbol(filePointer))
-	       || (__INST(handleType) == @symbol(socketFilePointer))
-	       || (__INST(handleType) == @symbol(pipeFilePointer))) {
-	fd = fileno(__FILEVal(fp));
+        if ((__INST(handleType) == nil)
+               || (__INST(handleType) == @symbol(filePointer))
+               || (__INST(handleType) == @symbol(socketFilePointer))
+               || (__INST(handleType) == @symbol(pipeFilePointer))) {
+        fd = fileno(__FILEVal(fp));
     } else {
-	error = @symbol(badHandleType);
-	goto out;
+        error = @symbol(badHandleType);
+        goto out;
     }
 
 #ifdef __win32__
      __threadErrno = 0;
      ret = __STX_API_NOINT_CALL1( "FlushFileBuffers", FlushFileBuffers, _get_osfhandle(fd));
      if (ret) {
-	 RETURN (self);
+         RETURN (self);
      }
+     __threadErrno = __WIN32_ERR(GetLastError());
 #else
      __BEGIN_INTERRUPTABLE__
      do {
-	 ret = fsync(fd);
+         ret = fsync(fd);
      } while ((ret < 0) && (__threadErrno == EINTR));
      __END_INTERRUPTABLE__
 
      if (ret >= 0) {
-	 RETURN (self);
+         RETURN (self);
      }
 #endif /* ! __win32__ */
      error = __mkSmallInteger(__threadErrno);
@@ -3304,17 +3325,19 @@
 out:;
 %}.
     error notNil ifTrue:[
-	lastErrorNumber := error.
-	self ioError:error.
-	^ self.
+        lastErrorNumber := error.
+        self ioError:error.
+        ^ self.
     ].
     handle isNil ifTrue:[self errorNotOpen].
 
     "
-	|f|
-	f := 'x' asFilename writeStream.
-	f nextPutAll:'hallo'; sync; syncData; close
+        |f|
+        f := 'x' asFilename writeStream.
+        f nextPutAll:'hallo'; sync; syncData; close
     "
+
+    "Modified: / 22-11-2018 / 14:51:43 / Stefan Vogel"
 !
 
 syncData
@@ -3333,39 +3356,40 @@
     OBJ fp = __INST(handle);
 
     if (fp == nil)
-	goto out;
+        goto out;
 
     if (__INST(handleType) == @symbol(socketHandle)) {
-	// syncing a socket to disk ?
-	error = @symbol(badHandleType);
-	goto out;
-	// fd = __FILEVal(fp);
+        // syncing a socket to disk ?
+        error = @symbol(badHandleType);
+        goto out;
+        // fd = __FILEVal(fp);
     } else
-	if ((__INST(handleType) == nil)
-	       || (__INST(handleType) == @symbol(filePointer))
-	       || (__INST(handleType) == @symbol(socketFilePointer))
-	       || (__INST(handleType) == @symbol(pipeFilePointer))) {
-	fd = fileno(__FILEVal(fp));
+        if ((__INST(handleType) == nil)
+               || (__INST(handleType) == @symbol(filePointer))
+               || (__INST(handleType) == @symbol(socketFilePointer))
+               || (__INST(handleType) == @symbol(pipeFilePointer))) {
+        fd = fileno(__FILEVal(fp));
     } else {
-	error = @symbol(badHandleType);
-	goto out;
+        error = @symbol(badHandleType);
+        goto out;
     }
 
 #ifdef __win32__
      __threadErrno = 0;
      ret = __STX_API_NOINT_CALL1( "FlushFileBuffers", FlushFileBuffers, _get_osfhandle(fd));
      if (ret) {
-	 RETURN (self);
+         RETURN (self);
      }
+     __threadErrno = __WIN32_ERR(GetLastError());
 #else
      __BEGIN_INTERRUPTABLE__
      do {
-	 ret = fdatasync(fd);
+         ret = fdatasync(fd);
      } while ((ret < 0) && (__threadErrno == EINTR));
      __END_INTERRUPTABLE__
 
      if (ret >= 0) {
-	 RETURN (self);
+         RETURN (self);
      }
 #endif /* ! __win32__ */
      error = __mkSmallInteger(__threadErrno);
@@ -3374,9 +3398,9 @@
 %}.
 
     error notNil ifTrue:[
-	lastErrorNumber := error.
-	self ioError:error.
-	^ self.
+        lastErrorNumber := error.
+        self ioError:error.
+        ^ self.
     ].
     handle isNil ifTrue:[^ self errorNotOpen].
 
@@ -3384,10 +3408,12 @@
     self sync.
 
     "
-	|f|
-	f := 'x' asFilename writeStream.
-	f nextPutAll:'hallo'; sync; syncData; close
+        |f|
+        f := 'x' asFilename writeStream.
+        f nextPutAll:'hallo'; sync; syncData; close
     "
+
+    "Modified: / 22-11-2018 / 14:51:31 / Stefan Vogel"
 !
 
 tcgetattr
@@ -3678,99 +3704,102 @@
      || (__INST(handleType) == @symbol(socketFilePointer))
      || (__INST(handleType) == @symbol(socketHandle))
      || (__INST(handleType) == @symbol(pipeFilePointer))) {
-	if (((fp = __INST(handle)) != nil)
-	    && (__INST(mode) != @symbol(writeonly))
-	    && __bothSmallInteger(count, start)
-	) {
-	    f = __FILEVal(fp);
-
-	    cnt = __intVal(count);
-	    offs = __intVal(start) - 1;
-
-	    if (__isExternalBytesLike(anObject)) {
-		OBJ sz;
-
-		nInstBytes = 0;
-		extPtr = (char *)(__externalBytesAddress(anObject));
-		if (extPtr == NULL) goto bad;
-		sz = __externalBytesSize(anObject);
-		if (__isSmallInteger(sz)) {
-		    objSize = __intVal(sz);
-		} else {
-		    objSize = 0; /* unknown */
-		}
-	    } else {
-		OBJ oClass = __Class(anObject);
-		int nInstVars = __intVal(__ClassInstPtr(oClass)->c_ninstvars);
-
-		nInstBytes = OHDR_SIZE + __OBJS2BYTES__(nInstVars);
-
-		switch (__intVal(__ClassInstPtr(oClass)->c_flags) & ARRAYMASK) {
-		    case BYTEARRAY:
-		    case WORDARRAY:
-		    case LONGARRAY:
-		    case SWORDARRAY:
-		    case SLONGARRAY:
-		    case FLOATARRAY:
-			break;
-		    case DOUBLEARRAY:
+        if (((fp = __INST(handle)) != nil)
+            && (__INST(mode) != @symbol(writeonly))
+            && __bothSmallInteger(count, start)
+        ) {
+            f = __FILEVal(fp);
+
+            cnt = __intVal(count);
+            offs = __intVal(start) - 1;
+
+            if (__isExternalBytesLike(anObject)) {
+                OBJ sz;
+
+                nInstBytes = 0;
+                extPtr = (char *)(__externalBytesAddress(anObject));
+                if (extPtr == NULL) goto bad;
+                sz = __externalBytesSize(anObject);
+                if (__isSmallInteger(sz)) {
+                    objSize = __intVal(sz);
+                } else {
+                    objSize = 0; /* unknown */
+                }
+            } else {
+                OBJ oClass = __Class(anObject);
+                int nInstVars = __intVal(__ClassInstPtr(oClass)->c_ninstvars);
+
+                nInstBytes = OHDR_SIZE + __OBJS2BYTES__(nInstVars);
+
+                switch (__intVal(__ClassInstPtr(oClass)->c_flags) & ARRAYMASK) {
+                    case BYTEARRAY:
+                    case WORDARRAY:
+                    case LONGARRAY:
+                    case SWORDARRAY:
+                    case SLONGARRAY:
+                    case FLOATARRAY:
+                        break;
+                    case DOUBLEARRAY:
 #ifdef __NEED_DOUBLE_ALIGN
-			nInstBytes = (nInstBytes-1+__DOUBLE_ALIGN) &~ (__DOUBLE_ALIGN-1);
+                        nInstBytes = (nInstBytes-1+__DOUBLE_ALIGN) &~ (__DOUBLE_ALIGN-1);
 #endif
-			break;
-		    case LONGLONGARRAY:
-		    case SLONGLONGARRAY:
+                        break;
+                    case LONGLONGARRAY:
+                    case SLONGLONGARRAY:
 #ifdef __NEED_LONGLONG_ALIGN
-			nInstBytes = (nInstBytes-1+__LONGLONG_ALIGN) &~ (__LONGLONG_ALIGN-1);
+                        nInstBytes = (nInstBytes-1+__LONGLONG_ALIGN) &~ (__LONGLONG_ALIGN-1);
 #endif
-			break;
-		    default:
-			goto bad;
-		}
-		extPtr = (char *)0;
-		objSize = __Size(anObject) - nInstBytes;
-	    }
-
-	    if ((offs >= 0) && (cnt >= 0) && (objSize >= (cnt + offs))) {
-		_buffered = (__INST(buffered) == true);
-		if (_buffered) {
-		    __READING__(f);
-		}
-
-		if (extPtr) {
-		    __READAVAILBYTES__(ret, f, extPtr+offs, cnt, _buffered, __INST(handleType));
-		} else {
-		    /*
-		     * on interrupt, anObject may be moved to another location.
-		     * So we pass (char *)__InstPtr(anObject) + nInstBytes + offs to the macro __READ_BYTES__,
-		     * to get a new address.
-		     */
-		    offs += nInstBytes;
-		    __READAVAILBYTES_OBJ__(ret, f, anObject, offs, cnt, _buffered, __INST(handleType));
-		}
-		/* 0 is NOT an EOF condition here ... */
-		if (ret >= 0) {
-		    if (__isSmallInteger(__INST(position))) {
-			INT np = __intVal(__INST(position)) + ret;
-			OBJ t;
-
-			t = __MKINT(np); __INST(position) = t; __STORE(self, t);
-		    } else {
-			__INST(position) = nil; /* i.e. do not know */
-		    }
-		    RETURN (__mkSmallInteger(ret));
-		}
-		__INST(position) = nil;
-		error = __mkSmallInteger(__threadErrno);
-	    }
-	}
+                        break;
+                    default:
+                        goto bad;
+                }
+                extPtr = (char *)0;
+                objSize = __Size(anObject) - nInstBytes;
+            }
+
+            if ((offs >= 0) && (cnt >= 0) && (objSize >= (cnt + offs))) {
+                _buffered = (__INST(buffered) == true);
+                if (_buffered) {
+                    __READING__(f);
+                }
+
+                if (extPtr) {
+                    __READAVAILBYTES__(ret, f, extPtr+offs, cnt, _buffered, __INST(handleType));
+                } else {
+                    /*
+                     * on interrupt, anObject may be moved to another location.
+                     * So we pass (char *)__InstPtr(anObject) + nInstBytes + offs to the macro __READ_BYTES__,
+                     * to get a new address.
+                     */
+                    offs += nInstBytes;
+                    __READAVAILBYTES_OBJ__(ret, f, anObject, offs, cnt, _buffered, __INST(handleType));
+                }
+                /* 0 is NOT an EOF condition here ... */
+                if (ret >= 0) {
+                    if (__isSmallInteger(__INST(position))) {
+                        INT np = __intVal(__INST(position)) + ret;
+                        OBJ t;
+
+                        t = __MKINT(np); __INST(position) = t; __STORE(self, t);
+                    } else {
+                        __INST(position) = nil; /* i.e. do not know */
+                    }
+                    RETURN (__mkSmallInteger(ret));
+                }
+                __INST(position) = nil;
+# ifdef __win32__
+                __threadErrno = __WIN32_ERR(GetLastError());
+# endif
+                error = __mkSmallInteger(__threadErrno);
+            }
+        }
     }
 bad: ;
 %}.
     hitEOF ifTrue:[^ 0].
     error notNil ifTrue:[
-	lastErrorNumber := error.
-	^ self readError:error
+        lastErrorNumber := error.
+        ^ self readError:error
     ].
     handle isNil ifTrue:[^ self errorNotOpen].
     (mode == #writeonly) ifTrue:[^ self errorWriteOnly].
@@ -3778,6 +3807,8 @@
      count not integer or arg not bit-like (String, ByteArray etc)
     "
     ^ self primitiveFailed
+
+    "Modified: / 22-11-2018 / 14:44:51 / Stefan Vogel"
 !
 
 nextByte
@@ -3791,14 +3822,14 @@
     STObject handle = self.instVarAt(I_handle);
 
     if (handle != STObject.Nil) {
-	STObject next;
-
-	next = handle.nextByte();
-	if (next != STObject.EOF) {
-	    self.instVarAt_put(I_position, STObject.Nil);
-	    return __c__._RETURN( next );
-	}
-	self.instVarAt_put(I_hitEOF, STObject.True);
+        STObject next;
+
+        next = handle.nextByte();
+        if (next != STObject.EOF) {
+            self.instVarAt_put(I_position, STObject.Nil);
+            return __c__._RETURN( next );
+        }
+        self.instVarAt_put(I_hitEOF, STObject.True);
     }
 #else
     FILEPOINTER f;
@@ -3812,44 +3843,49 @@
      || (__INST(handleType) == @symbol(socketFilePointer))
      || (__INST(handleType) == @symbol(socketHandle))
      || (__INST(handleType) == @symbol(pipeFilePointer))) {
-	if (((fp = __INST(handle)) != nil)
-	 && (__INST(mode) != @symbol(writeonly))) {
-	    f = __FILEVal(fp);
-
-	    _buffered = (__INST(buffered) == true);
-	    if (_buffered) {
-		__READING__(f)
-	    }
-	    __READBYTE__(ret, f, &byte, _buffered, __INST(handleType));
-	    if (ret > 0) {
-		if (__isSmallInteger(__INST(position))) {
-		    INT np = __intVal(__INST(position)) + 1;
-		    OBJ t;
-
-		    t = __MKINT(np); __INST(position) = t; __STORE(self, t);
-		} else {
-		    __INST(position) = nil; /* i.e. do not know */
-		}
-		RETURN (__mkSmallInteger(byte));
-	    }
-
-	    if (ret == 0) {
-		__INST(hitEOF) = true;
-	    } else /* ret < 0 */ {
-		__INST(position) = nil;
-		error = __mkSmallInteger(__threadErrno);
-	    }
-	}
+        if (((fp = __INST(handle)) != nil)
+         && (__INST(mode) != @symbol(writeonly))) {
+            f = __FILEVal(fp);
+
+            _buffered = (__INST(buffered) == true);
+            if (_buffered) {
+                __READING__(f)
+            }
+            __READBYTE__(ret, f, &byte, _buffered, __INST(handleType));
+            if (ret > 0) {
+                if (__isSmallInteger(__INST(position))) {
+                    INT np = __intVal(__INST(position)) + 1;
+                    OBJ t;
+
+                    t = __MKINT(np); __INST(position) = t; __STORE(self, t);
+                } else {
+                    __INST(position) = nil; /* i.e. do not know */
+                }
+                RETURN (__mkSmallInteger(byte));
+            }
+
+            if (ret == 0) {
+                __INST(hitEOF) = true;
+            } else /* ret < 0 */ {
+                __INST(position) = nil;
+# ifdef __win32__
+                __threadErrno = __WIN32_ERR(GetLastError());
+# endif
+                error = __mkSmallInteger(__threadErrno);
+            }
+        }
     }
 #endif /* not SCHTEAM */
 %}.
     hitEOF ifTrue:[^ self pastEndRead].
     error notNil ifTrue:[
-	lastErrorNumber := error.
-	^ self readError:error
+        lastErrorNumber := error.
+        ^ self readError:error
     ].
     handle isNil ifTrue:[^ self errorNotOpen].
     ^ self errorWriteOnly
+
+    "Modified: / 22-11-2018 / 14:45:15 / Stefan Vogel"
 !
 
 nextBytes:count into:anObject startingAt:start
@@ -3891,98 +3927,101 @@
      || (__INST(handleType) == @symbol(socketFilePointer))
      || (__INST(handleType) == @symbol(socketHandle))
      || (__INST(handleType) == @symbol(pipeFilePointer))) {
-	if (((fp = __INST(handle)) != nil)
-	    && (__INST(mode) != @symbol(writeonly))
-	    && __bothSmallInteger(count, start)
-	) {
-	    f = __FILEVal(fp);
-
-	    cnt = __intVal(count);
-	    offs = __intVal(start) - 1;
-
-	    if (__isExternalBytesLike(anObject)) {
-		OBJ sz;
-
-		nInstBytes = 0;
-		extPtr = (char *)(__externalBytesAddress(anObject));
-		if (extPtr == NULL) goto bad;
-		sz = __externalBytesSize(anObject);
-		if (__isSmallInteger(sz)) {
-		    objSize = __intVal(sz);
-		} else {
-		    objSize = 0; /* unknown */
-		}
-	    } else {
-		OBJ oClass = __Class(anObject);
-		int nInstVars = __intVal(__ClassInstPtr(oClass)->c_ninstvars);
-
-		nInstBytes = OHDR_SIZE + __OBJS2BYTES__(nInstVars);
-		switch (__intVal(__ClassInstPtr(oClass)->c_flags) & ARRAYMASK) {
-		    case BYTEARRAY:
-		    case WORDARRAY:
-		    case LONGARRAY:
-		    case SWORDARRAY:
-		    case SLONGARRAY:
-		    case FLOATARRAY:
-			break;
-		    case DOUBLEARRAY:
+        if (((fp = __INST(handle)) != nil)
+            && (__INST(mode) != @symbol(writeonly))
+            && __bothSmallInteger(count, start)
+        ) {
+            f = __FILEVal(fp);
+
+            cnt = __intVal(count);
+            offs = __intVal(start) - 1;
+
+            if (__isExternalBytesLike(anObject)) {
+                OBJ sz;
+
+                nInstBytes = 0;
+                extPtr = (char *)(__externalBytesAddress(anObject));
+                if (extPtr == NULL) goto bad;
+                sz = __externalBytesSize(anObject);
+                if (__isSmallInteger(sz)) {
+                    objSize = __intVal(sz);
+                } else {
+                    objSize = 0; /* unknown */
+                }
+            } else {
+                OBJ oClass = __Class(anObject);
+                int nInstVars = __intVal(__ClassInstPtr(oClass)->c_ninstvars);
+
+                nInstBytes = OHDR_SIZE + __OBJS2BYTES__(nInstVars);
+                switch (__intVal(__ClassInstPtr(oClass)->c_flags) & ARRAYMASK) {
+                    case BYTEARRAY:
+                    case WORDARRAY:
+                    case LONGARRAY:
+                    case SWORDARRAY:
+                    case SLONGARRAY:
+                    case FLOATARRAY:
+                        break;
+                    case DOUBLEARRAY:
 #ifdef __NEED_DOUBLE_ALIGN
-			nInstBytes = (nInstBytes-1+__DOUBLE_ALIGN) &~ (__DOUBLE_ALIGN-1);
+                        nInstBytes = (nInstBytes-1+__DOUBLE_ALIGN) &~ (__DOUBLE_ALIGN-1);
 #endif
-			break;
-		    case LONGLONGARRAY:
-		    case SLONGLONGARRAY:
+                        break;
+                    case LONGLONGARRAY:
+                    case SLONGLONGARRAY:
 #ifdef __NEED_LONGLONG_ALIGN
-			nInstBytes = (nInstBytes-1+__LONGLONG_ALIGN) &~ (__LONGLONG_ALIGN-1);
+                        nInstBytes = (nInstBytes-1+__LONGLONG_ALIGN) &~ (__LONGLONG_ALIGN-1);
 #endif
-			break;
-		    default:
-			goto bad;
-		}
-		extPtr = (char *)0;
-		objSize = __Size(anObject) - nInstBytes;
-	    }
-	    if ((offs >= 0) && (cnt >= 0) && (objSize >= (cnt + offs))) {
-		_buffered = (__INST(buffered) == true);
-		if (_buffered) {
-		    __READING__(f);
-		}
-
-		if (extPtr) {
-		    __READBYTES__(ret, f, extPtr+offs, cnt, _buffered, __INST(handleType));
-		} else {
-		    /*
-		     * on interrupt, anObject may be moved to another location.
-		     * So we pass anObject, and the offset to the __READBYTES_OBJ__ macro.
-		     */
-		    offs += nInstBytes;
-		    __READBYTES_OBJ__(ret, f, anObject, offs, cnt, _buffered, __INST(handleType));
-		}
-
-		if (ret > 0) {
-		    if (__isSmallInteger(__INST(position))) {
-			INT np = __intVal(__INST(position)) + ret;
-			OBJ t = __MKINT(np); __INST(position) = t; __STORE(self, t);
-		    } else {
-			__INST(position) = nil; /* i.e. do not know */
-		    }
-		    RETURN (__mkSmallInteger(ret));
-		}
-		if (ret == 0) {
-		    __INST(hitEOF) = true;
-		} else /* ret < 0 */ {
-		    __INST(position) = nil;
-		    error = __mkSmallInteger(__threadErrno);
-		}
-	    }
-	}
+                        break;
+                    default:
+                        goto bad;
+                }
+                extPtr = (char *)0;
+                objSize = __Size(anObject) - nInstBytes;
+            }
+            if ((offs >= 0) && (cnt >= 0) && (objSize >= (cnt + offs))) {
+                _buffered = (__INST(buffered) == true);
+                if (_buffered) {
+                    __READING__(f);
+                }
+
+                if (extPtr) {
+                    __READBYTES__(ret, f, extPtr+offs, cnt, _buffered, __INST(handleType));
+                } else {
+                    /*
+                     * on interrupt, anObject may be moved to another location.
+                     * So we pass anObject, and the offset to the __READBYTES_OBJ__ macro.
+                     */
+                    offs += nInstBytes;
+                    __READBYTES_OBJ__(ret, f, anObject, offs, cnt, _buffered, __INST(handleType));
+                }
+
+                if (ret > 0) {
+                    if (__isSmallInteger(__INST(position))) {
+                        INT np = __intVal(__INST(position)) + ret;
+                        OBJ t = __MKINT(np); __INST(position) = t; __STORE(self, t);
+                    } else {
+                        __INST(position) = nil; /* i.e. do not know */
+                    }
+                    RETURN (__mkSmallInteger(ret));
+                }
+                if (ret == 0) {
+                    __INST(hitEOF) = true;
+                } else /* ret < 0 */ {
+                    __INST(position) = nil;
+# ifdef __win32__
+                    __threadErrno = __WIN32_ERR(GetLastError());
+# endif
+                    error = __mkSmallInteger(__threadErrno);
+                }
+            }
+        }
     }
 bad: ;
 %}.
     hitEOF ifTrue:[^ 0].
     error notNil ifTrue:[
-	lastErrorNumber := error.
-	^ self readError:error
+        lastErrorNumber := error.
+        ^ self readError:error
     ].
     handle isNil ifTrue:[^ self errorNotOpen].
     (mode == #writeonly) ifTrue:[^ self errorWriteOnly].
@@ -3990,6 +4029,8 @@
      count not integer or arg not bit-like (String, ByteArray etc)
     "
     ^ self primitiveFailed
+
+    "Modified: / 22-11-2018 / 14:45:28 / Stefan Vogel"
 !
 
 nextInt16MSB:msbFlag
@@ -4009,56 +4050,59 @@
      || (__INST(handleType) == @symbol(socketFilePointer))
      || (__INST(handleType) == @symbol(socketHandle))
      || (__INST(handleType) == @symbol(pipeFilePointer))) {
-	if (((fp = __INST(handle)) != nil)
-	    && (__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, __INST(handleType));
-
-	    if (ret == 2) {
-		if (__isSmallInteger(__INST(position))) {
-		    INT np = __intVal(__INST(position)) + 2;
-		    OBJ t;
-
-		    t = __MKINT(np); __INST(position) = t; __STORE(self, t);
-		} else {
-		    __INST(position) = nil; /* i.e. do not know */
-		}
-		if (msbFlag == true) {
+        if (((fp = __INST(handle)) != nil)
+            && (__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, __INST(handleType));
+
+            if (ret == 2) {
+                if (__isSmallInteger(__INST(position))) {
+                    INT np = __intVal(__INST(position)) + 2;
+                    OBJ t;
+
+                    t = __MKINT(np); __INST(position) = t; __STORE(self, t);
+                } else {
+                    __INST(position) = nil; /* i.e. do not know */
+                }
+                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 (__mkSmallInteger(value));
-	    }
-
-	    if (ret < 0) {
-		__INST(position) = nil; /* i.e. do not know */
-		error = __mkSmallInteger(__threadErrno);
-	    } else /* ret == 0 */ {
-		__INST(hitEOF) = true;
-	    }
-	}
+                }
+                RETURN (__mkSmallInteger(value));
+            }
+
+            if (ret < 0) {
+                __INST(position) = nil; /* i.e. do not know */
+# ifdef __win32__
+                __threadErrno = __WIN32_ERR(GetLastError());
+# endif
+                error = __mkSmallInteger(__threadErrno);
+            } else /* ret == 0 */ {
+                __INST(hitEOF) = true;
+            }
+        }
     }
 %}.
     hitEOF ifTrue:[^ self pastEndRead].
@@ -4066,6 +4110,8 @@
     (mode == #writeonly) ifTrue:[^ self errorWriteOnly].
     lastErrorNumber := error.
     ^ self readError:error.
+
+    "Modified: / 22-11-2018 / 14:45:57 / Stefan Vogel"
 !
 
 nextInt32MSB:msbFlag
@@ -4086,66 +4132,69 @@
      || (__INST(handleType) == @symbol(socketFilePointer))
      || (__INST(handleType) == @symbol(socketHandle))
      || (__INST(handleType) == @symbol(pipeFilePointer))) {
-	if (((fp = __INST(handle)) != nil)
-	    && (__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, __INST(handleType));
-
-	    if (ret == 4) {
-		if (__isSmallInteger(__INST(position))) {
-		    INT np = __intVal(__INST(position)) + 4;
-		    OBJ t;
-
-		    t = __MKINT(np); __INST(position) = t; __STORE(self, t);
-		} else {
-		    __INST(position) = nil; /* i.e. do not know */
-		}
-		if (msbFlag == true) {
+        if (((fp = __INST(handle)) != nil)
+            && (__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, __INST(handleType));
+
+            if (ret == 4) {
+                if (__isSmallInteger(__INST(position))) {
+                    INT np = __intVal(__INST(position)) + 4;
+                    OBJ t;
+
+                    t = __MKINT(np); __INST(position) = t; __STORE(self, t);
+                } else {
+                    __INST(position) = nil; /* i.e. do not know */
+                }
+                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
-		}
+                }
 #if __POINTER_SIZE__ == 8
-		RETURN ( __mkSmallInteger(value));
+                RETURN ( __mkSmallInteger(value));
 #else
-		RETURN ( __MKINT(value) );
+                RETURN ( __MKINT(value) );
 #endif
-	    }
-
-	    if (ret < 0) {
-		__INST(position) = nil;
-		error = __mkSmallInteger(__threadErrno);
-	    } else /* ret == 0 */ {
-		__INST(hitEOF) = true;
-	    }
-	}
+            }
+
+            if (ret < 0) {
+                __INST(position) = nil;
+# ifdef __win32__
+                __threadErrno = __WIN32_ERR(GetLastError());
+# endif
+                error = __mkSmallInteger(__threadErrno);
+            } else /* ret == 0 */ {
+                __INST(hitEOF) = true;
+            }
+        }
     }
 %}.
     hitEOF ifTrue:[^ self pastEndRead].
@@ -4153,6 +4202,8 @@
     (mode == #writeonly) ifTrue:[^ self errorWriteOnly].
     lastErrorNumber := error.
     ^ self readError:error.
+
+    "Modified: / 22-11-2018 / 14:46:05 / Stefan Vogel"
 !
 
 nextUnsignedInt16MSB:msbFlag
@@ -4172,56 +4223,59 @@
      || (__INST(handleType) == @symbol(socketFilePointer))
      || (__INST(handleType) == @symbol(socketHandle))
      || (__INST(handleType) == @symbol(pipeFilePointer))) {
-	if (((fp = __INST(handle)) != nil)
-	    && (__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, __INST(handleType));
-
-	    if (ret == 2) {
-		if (__isSmallInteger(__INST(position))) {
-		    INT np = __intVal(__INST(position)) + 2;
-		    OBJ t;
-
-		    t = __MKINT(np); __INST(position) = t; __STORE(self, t);
-		} else {
-		    __INST(position) = nil; /* i.e. do not know */
-		}
-		if (msbFlag == true) {
+        if (((fp = __INST(handle)) != nil)
+            && (__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, __INST(handleType));
+
+            if (ret == 2) {
+                if (__isSmallInteger(__INST(position))) {
+                    INT np = __intVal(__INST(position)) + 2;
+                    OBJ t;
+
+                    t = __MKINT(np); __INST(position) = t; __STORE(self, t);
+                } else {
+                    __INST(position) = nil; /* i.e. do not know */
+                }
+                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 (__mkSmallInteger(value));
-	    }
-
-	    if (ret < 0) {
-		__INST(position) = nil; /* i.e. do not know */
-		error = __mkSmallInteger(__threadErrno);
-	    } else /* ret == 0 */ {
-		__INST(hitEOF) = true;
-	    }
-	}
+                }
+                RETURN (__mkSmallInteger(value));
+            }
+
+            if (ret < 0) {
+                __INST(position) = nil; /* i.e. do not know */
+# ifdef __win32__
+                __threadErrno = __WIN32_ERR(GetLastError());
+# endif
+                error = __mkSmallInteger(__threadErrno);
+            } else /* ret == 0 */ {
+                __INST(hitEOF) = true;
+            }
+        }
     }
 %}.
     hitEOF ifTrue:[^ self pastEndRead].
@@ -4229,6 +4283,8 @@
     (mode == #writeonly) ifTrue:[^ self errorWriteOnly].
     lastErrorNumber := error.
     ^ self readError:error.
+
+    "Modified: / 22-11-2018 / 14:49:05 / Stefan Vogel"
 !
 
 nextUnsignedInt32MSB:msbFlag
@@ -4249,70 +4305,73 @@
      || (__INST(handleType) == @symbol(socketFilePointer))
      || (__INST(handleType) == @symbol(socketHandle))
      || (__INST(handleType) == @symbol(pipeFilePointer))) {
-	if (((fp = __INST(handle)) != nil)
-	    && (__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, __INST(handleType));
-
-	    if (ret == 4) {
-		if (__isSmallInteger(__INST(position))) {
-		    INT np = __intVal(__INST(position)) + 4;
-		    OBJ t;
-
-		    t = __MKINT(np); __INST(position) = t; __STORE(self, t);
-		} else {
-		    __INST(position) = nil; /* i.e. do not know */
-		}
-		if (msbFlag == true) {
+        if (((fp = __INST(handle)) != nil)
+            && (__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, __INST(handleType));
+
+            if (ret == 4) {
+                if (__isSmallInteger(__INST(position))) {
+                    INT np = __intVal(__INST(position)) + 4;
+                    OBJ t;
+
+                    t = __MKINT(np); __INST(position) = t; __STORE(self, t);
+                } else {
+                    __INST(position) = nil; /* i.e. do not know */
+                }
+                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
-		}
+                }
 #if __POINTER_SIZE__ == 8
-		value &= 0xFFFFFFFF;
-		RETURN (__mkSmallInteger(value));
+                value &= 0xFFFFFFFF;
+                RETURN (__mkSmallInteger(value));
 #else
-		if (value <= _MAX_INT) {
-		    RETURN (__mkSmallInteger(value));
-		}
-		RETURN (__MKULARGEINT(value) );
+                if (value <= _MAX_INT) {
+                    RETURN (__mkSmallInteger(value));
+                }
+                RETURN (__MKULARGEINT(value) );
 #endif
-	    }
-
-	    if (ret < 0) {
-		__INST(position) = nil; /* i.e. do not know */
-		error = __mkSmallInteger(__threadErrno);
-	    } else /* ret == 0 */ {
-		__INST(hitEOF) = true;
-	    }
-	}
+            }
+
+            if (ret < 0) {
+                __INST(position) = nil; /* i.e. do not know */
+# ifdef __win32__
+                __threadErrno = __WIN32_ERR(GetLastError());
+# endif
+                error = __mkSmallInteger(__threadErrno);
+            } else /* ret == 0 */ {
+                __INST(hitEOF) = true;
+            }
+        }
     }
 %}.
     hitEOF ifTrue:[^ self pastEndRead].
@@ -4320,6 +4379,8 @@
     (mode == #writeonly) ifTrue:[^ self errorWriteOnly].
     lastErrorNumber := error.
     ^ self readError:error.
+
+    "Modified: / 22-11-2018 / 14:49:23 / Stefan Vogel"
 !
 
 nextWord
@@ -4356,49 +4417,54 @@
      || (__INST(handleType) == @symbol(socketFilePointer))
      || (__INST(handleType) == @symbol(socketHandle))
      || (__INST(handleType) == @symbol(pipeFilePointer))) {
-	if (((fp = __INST(handle)) != nil)
-	 && (__INST(mode) != @symbol(readonly))
-	 && __isSmallInteger(aByteValue)
-
-	) {
-	    int _buffered = (__INST(buffered) == true);
-	    FILEPOINTER f = __FILEVal(fp);
-	    char c = __intVal(aByteValue);
-	    int cnt;
-
-	    if (_buffered) {
-		__WRITING__(f)
-	    }
+        if (((fp = __INST(handle)) != nil)
+         && (__INST(mode) != @symbol(readonly))
+         && __isSmallInteger(aByteValue)
+
+        ) {
+            int _buffered = (__INST(buffered) == true);
+            FILEPOINTER f = __FILEVal(fp);
+            char c = __intVal(aByteValue);
+            int cnt;
+
+            if (_buffered) {
+                __WRITING__(f)
+            }
 #ifdef __win32__
-	    if ((f == __win32_stdout()) || (f == __win32_stderr())) {
-		cnt = __win32_fwrite(&c, 1, 1, f);
-	    } else
+            if ((f == __win32_stdout()) || (f == __win32_stderr())) {
+                cnt = __win32_fwrite(&c, 1, 1, f);
+            } else
 #endif
-	    {
-		__WRITEBYTE__(cnt, f, &c, _buffered, __INST(handleType));
-	    }
-	    if (cnt == 1) {
-		if (__isSmallInteger(__INST(position))) {
-		    INT np = __intVal(__INST(position)) + 1;
-		    OBJ t;
-
-		    t = __MKINT(np); __INST(position) = t; __STORE(self, t);
-		} else {
-		    __INST(position) = nil; /* i.e. do not know */
-		}
-		RETURN (self);
-	    }
-	    if (cnt < 0) {
-		__INST(position) = nil; /* i.e. do not know */
-	    }
-	    error = __mkSmallInteger(__threadErrno);
-	}
+            {
+                __WRITEBYTE__(cnt, f, &c, _buffered, __INST(handleType));
+            }
+            if (cnt == 1) {
+                if (__isSmallInteger(__INST(position))) {
+                    INT np = __intVal(__INST(position)) + 1;
+                    OBJ t;
+
+                    t = __MKINT(np); __INST(position) = t; __STORE(self, t);
+                } else {
+                    __INST(position) = nil; /* i.e. do not know */
+                }
+                RETURN (self);
+            }
+            if (cnt < 0) {
+                __INST(position) = nil; /* i.e. do not know */
+            }
+# ifdef __win32__
+            __threadErrno = __WIN32_ERR(GetLastError());
+# endif
+            error = __mkSmallInteger(__threadErrno);
+        }
     }
 %}.
     handle isNil ifTrue:[self errorNotOpen. ^ self].
     (mode == #readonly) ifTrue:[self errorReadOnly. ^ self].
     lastErrorNumber := error.
     self writeError:error.
+
+    "Modified: / 22-11-2018 / 14:47:34 / Stefan Vogel"
 !
 
 nextPutInt16:anIntegerOrCharacter MSB:msbFlag
@@ -4413,8 +4479,8 @@
 %{
     int num;
     union {
-	char bytes[2];
-	short shortVal;
+        char bytes[2];
+        short shortVal;
     } u;
     OBJ fp;
 
@@ -4424,68 +4490,72 @@
      || (__INST(handleType) == @symbol(socketFilePointer))
      || (__INST(handleType) == @symbol(socketHandle))
      || (__INST(handleType) == @symbol(pipeFilePointer))) {
-	if (((fp = __INST(handle)) != nil)
-	 && (__INST(mode) != @symbol(readonly))
-	) {
-	    FILEPOINTER f = __FILEVal(fp);
-	    int _buffered = (__INST(buffered) == true);
-	    int cnt;
-
-	    if (__isSmallInteger(anIntegerOrCharacter)) {
-		num = __intVal(anIntegerOrCharacter);
-	    } else if (__isCharacter(anIntegerOrCharacter)) {
-		num = __smallIntegerVal(__characterVal(anIntegerOrCharacter));
-	    } else
-		goto out;
-
-	    if (msbFlag == true) {
+        if (((fp = __INST(handle)) != nil)
+         && (__INST(mode) != @symbol(readonly))
+        ) {
+            FILEPOINTER f = __FILEVal(fp);
+            int _buffered = (__INST(buffered) == true);
+            int cnt;
+
+            if (__isSmallInteger(anIntegerOrCharacter)) {
+                num = __intVal(anIntegerOrCharacter);
+            } else if (__isCharacter(anIntegerOrCharacter)) {
+                num = __smallIntegerVal(__characterVal(anIntegerOrCharacter));
+            } else
+                goto out;
+
+            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
-	    }
-
-	    if (_buffered) {
-		__WRITING__(f)
-	    }
-	    __WRITEBYTES__(cnt, f, u.bytes, 2, _buffered, __INST(handleType));
-
-	    if (cnt == 2) {
-		if (__isSmallInteger(__INST(position))) {
-		    INT np = __intVal(__INST(position)) + 2;
-		    OBJ t;
-
-		    t = __MKINT(np); __INST(position) = t; __STORE(self, t);
-		} else {
-		    __INST(position) = nil; /* i.e. do not know */
-		}
-		RETURN ( self );
-	    }
-	    __INST(position) = nil; /* i.e. do not know */
-	    error = __mkSmallInteger(__threadErrno);
-	}
+            }
+
+            if (_buffered) {
+                __WRITING__(f)
+            }
+            __WRITEBYTES__(cnt, f, u.bytes, 2, _buffered, __INST(handleType));
+
+            if (cnt == 2) {
+                if (__isSmallInteger(__INST(position))) {
+                    INT np = __intVal(__INST(position)) + 2;
+                    OBJ t;
+
+                    t = __MKINT(np); __INST(position) = t; __STORE(self, t);
+                } else {
+                    __INST(position) = nil; /* i.e. do not know */
+                }
+                RETURN ( self );
+            }
+            __INST(position) = nil; /* i.e. do not know */
+# ifdef __win32__
+            __threadErrno = __WIN32_ERR(GetLastError());
+# endif
+            error = __mkSmallInteger(__threadErrno);
+        }
     }
 out:;
 %}.
     error notNil ifTrue:[
-	lastErrorNumber := error.
-	self writeError:error.
-	^ self
+        lastErrorNumber := error.
+        self writeError:error.
+        ^ self
     ].
     handle isNil ifTrue:[self errorNotOpen. ^ self].
     (mode == #readonly) ifTrue:[self errorReadOnly. ^ self].
     self argumentMustBeInteger
 
     "Modified: / 19-09-2017 / 16:32:29 / stefan"
+    "Modified: / 22-11-2018 / 14:48:14 / Stefan Vogel"
 !
 
 nextPutInt16LSB:anIntegerOrCharacter
@@ -4513,8 +4583,8 @@
 %{
     int num;
     union {
-	char bytes[2];
-	short shortVal;
+        char bytes[2];
+        short shortVal;
     } u;
     OBJ fp;
 
@@ -4524,47 +4594,51 @@
      || (__INST(handleType) == @symbol(socketFilePointer))
      || (__INST(handleType) == @symbol(socketHandle))
      || (__INST(handleType) == @symbol(pipeFilePointer))) {
-	if (((fp = __INST(handle)) != nil)
-	 && (__INST(mode) != @symbol(readonly))
-	) {
-	    FILEPOINTER f = __FILEVal(fp);
-	    int _buffered = (__INST(buffered) == true);
-	    int cnt;
-
-	    if (__isSmallInteger(anIntegerOrCharacter)) {
-		num = __intVal(anIntegerOrCharacter);
-	    } else if (__isCharacter(anIntegerOrCharacter)) {
-		num = __smallIntegerVal(__characterVal(anIntegerOrCharacter));
-	    } else
-		goto out;
-
-	    u.shortVal = num;
-
-	    if (_buffered) {
-		__WRITING__(f)
-	    }
-	    __WRITEBYTES__(cnt, f, u.bytes, 2, _buffered, __INST(handleType));
-
-	    if (cnt == 2) {
-		if (__isSmallInteger(__INST(position))) {
-		    INT np = __intVal(__INST(position)) + 2;
-		    OBJ t;
-
-		    t = __MKINT(np); __INST(position) = t; __STORE(self, t);
-		} else {
-		    __INST(position) = nil; /* i.e. do not know */
-		}
-		RETURN ( self );
-	    }
-	    __INST(position) = nil; /* i.e. do not know */
-	    error = __mkSmallInteger(__threadErrno);
-	}
+        if (((fp = __INST(handle)) != nil)
+         && (__INST(mode) != @symbol(readonly))
+        ) {
+            FILEPOINTER f = __FILEVal(fp);
+            int _buffered = (__INST(buffered) == true);
+            int cnt;
+
+            if (__isSmallInteger(anIntegerOrCharacter)) {
+                num = __intVal(anIntegerOrCharacter);
+            } else if (__isCharacter(anIntegerOrCharacter)) {
+                num = __smallIntegerVal(__characterVal(anIntegerOrCharacter));
+            } else
+                goto out;
+
+            u.shortVal = num;
+
+            if (_buffered) {
+                __WRITING__(f)
+            }
+            __WRITEBYTES__(cnt, f, u.bytes, 2, _buffered, __INST(handleType));
+
+            if (cnt == 2) {
+                if (__isSmallInteger(__INST(position))) {
+                    INT np = __intVal(__INST(position)) + 2;
+                    OBJ t;
+
+                    t = __MKINT(np); __INST(position) = t; __STORE(self, t);
+                } else {
+                    __INST(position) = nil; /* i.e. do not know */
+                }
+                RETURN ( self );
+            }
+            __INST(position) = nil; /* i.e. do not know */
+# ifdef __win32__
+            __threadErrno = __WIN32_ERR(GetLastError());
+# endif
+            error = __mkSmallInteger(__threadErrno);
+        }
     }
 out:;
 %}.
     self nextPutInt16:anIntegerOrCharacter MSB:(UninterpretedBytes isBigEndian).
 
     "Modified: / 19-09-2017 / 16:32:40 / stefan"
+    "Modified: / 22-11-2018 / 14:48:23 / Stefan Vogel"
 !
 
 nextPutInt32:aNumber MSB:msbFlag
@@ -4580,29 +4654,29 @@
 %{
     int num;
     union {
-	char bytes[4];
-	int intVal;
+        char bytes[4];
+        int intVal;
     } u;
     OBJ fp;
 
     __INST(lastErrorNumber) = nil;
     if (__isSmallInteger(aNumber)) {
-	num = __intVal(aNumber);
+        num = __intVal(aNumber);
     } else {
 #if __POINTER_SIZE__ == 8
-	// always more than 4-bytes
-	goto badArg;
+        // always more than 4-bytes
+        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
     }
 
@@ -4611,69 +4685,73 @@
      || (__INST(handleType) == @symbol(socketFilePointer))
      || (__INST(handleType) == @symbol(socketHandle))
      || (__INST(handleType) == @symbol(pipeFilePointer))) {
-	if (((fp = __INST(handle)) != nil)
-	 && (__INST(mode) != @symbol(readonly))
-	) {
-	    int _buffered = (__INST(buffered) == true);
-	    FILEPOINTER f = __FILEVal(fp);
-	    int cnt;
-
-	    if (msbFlag == true) {
+        if (((fp = __INST(handle)) != nil)
+         && (__INST(mode) != @symbol(readonly))
+        ) {
+            int _buffered = (__INST(buffered) == true);
+            FILEPOINTER f = __FILEVal(fp);
+            int cnt;
+
+            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
-	    }
-
-	    if (_buffered) {
-		__WRITING__(f)
-	    }
-	    __WRITEBYTES__(cnt, f, u.bytes, 4, _buffered, __INST(handleType));
-
-	    if (cnt == 4) {
-		if (__isSmallInteger(__INST(position))) {
-		    INT np = __intVal(__INST(position)) + 4;
-		    OBJ t;
-
-		    t = __MKINT(np); __INST(position) = t; __STORE(self, t);
-		} else {
-		    __INST(position) = nil; /* i.e. do not know */
-		}
-		RETURN ( self );
-	    }
-	    __INST(position) = nil; /* i.e. do not know */
-	    error = __mkSmallInteger(__threadErrno);
-	}
+            }
+
+            if (_buffered) {
+                __WRITING__(f)
+            }
+            __WRITEBYTES__(cnt, f, u.bytes, 4, _buffered, __INST(handleType));
+
+            if (cnt == 4) {
+                if (__isSmallInteger(__INST(position))) {
+                    INT np = __intVal(__INST(position)) + 4;
+                    OBJ t;
+
+                    t = __MKINT(np); __INST(position) = t; __STORE(self, t);
+                } else {
+                    __INST(position) = nil; /* i.e. do not know */
+                }
+                RETURN ( self );
+            }
+            __INST(position) = nil; /* i.e. do not know */
+# ifdef __win32__
+            __threadErrno = __WIN32_ERR(GetLastError());
+# endif
+            error = __mkSmallInteger(__threadErrno);
+        }
     }
 badArg: ;
 %}.
     handle isNil ifTrue:[self errorNotOpen. ^ self].
     (mode == #readonly) ifTrue:[self errorReadOnly. ^ self].
     error notNil ifTrue:[
-	lastErrorNumber := error.
-	self writeError:error.
-	^ self
+        lastErrorNumber := error.
+        self writeError:error.
+        ^ self
     ].
 
     aNumber isInteger ifTrue:[
-	^ super nextPutInt32:aNumber MSB:msbFlag
+        ^ super nextPutInt32:aNumber MSB:msbFlag
     ].
     self argumentMustBeInteger
 
     "Modified: / 19-09-2017 / 16:32:50 / stefan"
+    "Modified: / 22-11-2018 / 14:48:29 / Stefan Vogel"
 !
 
 nextPutInt32LSB:anIntegerOrCharacter
@@ -4697,37 +4775,37 @@
      (i.e. both signed and unsigned int32 values can be written.
      Works in both binary and text modes.
      Notice: this message should not be sent explicitly by ANY program.
-	     the following implementation replaces the code of either nextPutInt32MSB or LSB
-	     dynamically (see #initialize on the class side)"
+             the following implementation replaces the code of either nextPutInt32MSB or LSB
+             dynamically (see #initialize on the class side)"
 
     |error|
 
 %{
     int num;
     union {
-	char bytes[4];
-	int intVal;
+        char bytes[4];
+        int intVal;
     } u;
     OBJ fp;
 
     __INST(lastErrorNumber) = nil;
     if (__isSmallInteger(anInteger)) {
-	num = __intVal(anInteger);
+        num = __intVal(anInteger);
     } else {
 #if __POINTER_SIZE__ == 8
-	// always more than 4-bytes
-	goto badArg;
+        // always more than 4-bytes
+        goto badArg;
 #else
-	num = __longIntVal(anInteger);
-	if (num == 0) {
-	    num = __signedLongIntVal(anInteger);
-	    if (num == 0) {
-		/* bad arg or out-of-range integer
-		 * (handled by the fallBack code)
-		 */
-		goto badArg;
-	    }
-	}
+        num = __longIntVal(anInteger);
+        if (num == 0) {
+            num = __signedLongIntVal(anInteger);
+            if (num == 0) {
+                /* bad arg or out-of-range integer
+                 * (handled by the fallBack code)
+                 */
+                goto badArg;
+            }
+        }
 #endif
     }
 
@@ -4736,39 +4814,43 @@
      || (__INST(handleType) == @symbol(socketFilePointer))
      || (__INST(handleType) == @symbol(socketHandle))
      || (__INST(handleType) == @symbol(pipeFilePointer))) {
-	if (((fp = __INST(handle)) != nil)
-	 && (__INST(mode) != @symbol(readonly))
-	) {
-	    int _buffered = (__INST(buffered) == true);
-	    FILEPOINTER f = __FILEVal(fp);
-	    int cnt;
-
-	    u.intVal = num;
-	    if (_buffered) {
-		__WRITING__(f)
-	    }
-	    __WRITEBYTES__(cnt, f, u.bytes, 4, _buffered, __INST(handleType));
-
-	    if (cnt == 4) {
-		if (__isSmallInteger(__INST(position))) {
-		    INT np = __intVal(__INST(position)) + 4;
-		    OBJ t;
-
-		    t = __MKINT(np); __INST(position) = t; __STORE(self, t);
-		} else {
-		    __INST(position) = nil; /* i.e. do not know */
-		}
-		RETURN ( self );
-	    }
-	    __INST(position) = nil; /* i.e. do not know */
-	    error = __mkSmallInteger(__threadErrno);
-	}
+        if (((fp = __INST(handle)) != nil)
+         && (__INST(mode) != @symbol(readonly))
+        ) {
+            int _buffered = (__INST(buffered) == true);
+            FILEPOINTER f = __FILEVal(fp);
+            int cnt;
+
+            u.intVal = num;
+            if (_buffered) {
+                __WRITING__(f)
+            }
+            __WRITEBYTES__(cnt, f, u.bytes, 4, _buffered, __INST(handleType));
+
+            if (cnt == 4) {
+                if (__isSmallInteger(__INST(position))) {
+                    INT np = __intVal(__INST(position)) + 4;
+                    OBJ t;
+
+                    t = __MKINT(np); __INST(position) = t; __STORE(self, t);
+                } else {
+                    __INST(position) = nil; /* i.e. do not know */
+                }
+                RETURN ( self );
+            }
+            __INST(position) = nil; /* i.e. do not know */
+# ifdef __win32__
+            __threadErrno = __WIN32_ERR(GetLastError());
+# endif
+            error = __mkSmallInteger(__threadErrno);
+        }
     }
 badArg: ;
 %}.
     self nextPutInt32:anInteger MSB:(UninterpretedBytes isBigEndian)
 
     "Modified: / 19-09-2017 / 16:32:59 / stefan"
+    "Modified: / 22-11-2018 / 14:48:41 / Stefan Vogel"
 !
 
 nextPutUtf16:aCharacter
@@ -4780,7 +4862,7 @@
     "
 	(FileStream newTemporary
 	    nextPutUtf16:$B;
-	    nextPutUtf16:$Ä;
+	    nextPutUtf16:$Ä;
 	    nextPutUtf16:(Character codePoint:16r10CCCC);
 	    reset;
 	    binary;
@@ -4830,7 +4912,7 @@
     |fp error|
 
     handle isNil ifTrue:[
-	^ self.
+        ^ self.
     ].
     fp := handle.
     "/ (didWrite==true and:[binary ~~ true and:[eolMode = #crlf]]) ifTrue: [ self breakPoint:#sr ].
@@ -4839,76 +4921,86 @@
     int rslt;
 
     if (__INST(handleType) == @symbol(socketHandle)) {
-	SOCKET sock = (SOCKET)(__FILEVal(fp));
-
-	if (@global(FileOpenTrace) == true) {
-	    fprintf(stderr, "close socket [ExternalStream] %"_lx_"\n", (INT)sock);
-	}
-
-	// whether the close() will be successful or not - the handle is invalid now!
-	__INST(handle) = nil;
-	do {
+        SOCKET sock = (SOCKET)(__FILEVal(fp));
+
+        if (@global(FileOpenTrace) == true) {
+            fprintf(stderr, "close socket [ExternalStream] %"_lx_"\n", (INT)sock);
+        }
+
+        // whether the close() will be successful or not - the handle is invalid now!
+        __INST(handle) = nil;
+        do {
 #ifdef __win32__
-	    rslt = __STX_WSA_NOINT_CALL1("closesocket", closesocket, sock);
+            rslt = __STX_WSA_NOINT_CALL1("closesocket", closesocket, sock);
 #else
-	    rslt = close(sock);
+            rslt = close(sock);
 #endif
-	} while((rslt < 0) && (__threadErrno == EINTR));
+        } while((rslt < 0) && (__threadErrno == EINTR));
     } else if ((__INST(handleType) == nil)
-	       || (__INST(handleType) == @symbol(filePointer))
-	       || (__INST(handleType) == @symbol(socketFilePointer))
-	       || (__INST(handleType) == @symbol(pipeFilePointer)))
+               || (__INST(handleType) == @symbol(filePointer))
+               || (__INST(handleType) == @symbol(socketFilePointer))
+               || (__INST(handleType) == @symbol(pipeFilePointer)))
     {
-	FILEPOINTER f = __FILEVal(fp);
-
-	if (@global(FileOpenTrace) == true) {
-	    fprintf(stderr, "fclose [ExternalStream] %"_lx_"\n", (INT)f);
-	}
-	// whether the close() will be successful or not - the handle is invalid now!
-	__INST(handle) = nil;
+        FILEPOINTER f = __FILEVal(fp);
+
+        if (@global(FileOpenTrace) == true) {
+            fprintf(stderr, "fclose [ExternalStream] %"_lx_"\n", (INT)f);
+        }
 
 #ifdef __win32__
-	if (__INST(mode) != @symbol(readonly) && __INST(buffered) != false) {
-	    // do a fflush() first, so that fclose() doesn't block
-	    // we suspect, that EINTR causes problems in fclose()
-	    do {
-		__threadErrno = 0;
-		rslt = __STX_C_CALL1("fflush", fflush, f);
-	    } while((rslt < 0) && (__threadErrno == EINTR));
-	}
-	do {
-	    __threadErrno = 0;
-	    rslt = __STX_C_NOINT_CALL1("fclose", fclose, f);
-	} while((rslt < 0) && (__threadErrno == EINTR));
+        if (__INST(mode) != @symbol(readonly) && __INST(buffered) != false) {
+            // do a fflush() first, so that fclose() doesn't block
+            // we suspect, that EINTR causes problems in fclose()
+            do {
+                __threadErrno = 0;
+                rslt = __STX_C_CALL1("fflush", fflush, f);
+            } while((rslt < 0) && (__threadErrno == EINTR));
+            if (rslt < 0)
+                goto err;
+        }
+        // whether the close() will be successful or not - the handle is invalid now!
+        __INST(handle) = nil;
+        do {
+            __threadErrno = 0;
+            rslt = __STX_C_NOINT_CALL1("fclose", fclose, f);
+        } while((rslt < 0) && (__threadErrno == EINTR));
 #else
-	// cg: not sure why, but on osx, I get blocked occasionally in fclose
-	// lets try this:
-	if ((__INST(mode) != @symbol(readonly)) && (__INST(buffered) != false)) {
-	    // do a fflush() first, so that fclose() doesn't block
-	    // we suspect, that EINTR causes problems in fclose()
-	    do {
-		clearerr(f);
-		__threadErrno = 0;
-		__BEGIN_INTERRUPTABLE__
-		rslt = fflush(f);
-		__END_INTERRUPTABLE__
-	    } while((rslt < 0) && (__threadErrno == EINTR));
-	}
-	do {
-	    __threadErrno = 0;
-	    __BEGIN_INTERRUPTABLE__
-	    rslt = fclose(f);
-	    __END_INTERRUPTABLE__
-	} while((rslt < 0) && (__threadErrno == EINTR));
+        // cg: not sure why, but on osx, I get blocked occasionally in fclose
+        // lets try this:
+        if ((__INST(mode) != @symbol(readonly)) && (__INST(buffered) != false)) {
+            // do a fflush() first, so that fclose() doesn't block
+            // we suspect, that EINTR causes problems in fclose()
+            do {
+                clearerr(f);
+                __threadErrno = 0;
+                __BEGIN_INTERRUPTABLE__
+                rslt = fflush(f);
+                __END_INTERRUPTABLE__
+            } while((rslt < 0) && (__threadErrno == EINTR));
+            if (rslt < 0)
+                goto err;
+        }
+        // whether the close() will be successful or not - the handle is invalid now!
+        __INST(handle) = nil;
+        do {
+            __threadErrno = 0;
+            __BEGIN_INTERRUPTABLE__
+            rslt = fclose(f);
+            __END_INTERRUPTABLE__
+        } while((rslt < 0) && (__threadErrno == EINTR));
 #endif
     } else {
-	error = @symbol(badHandleType);
-	goto out;
+        error = @symbol(badHandleType);
+        goto out;
     }
 
     if (rslt < 0) {
-	error = __mkSmallInteger(__threadErrno);
-	goto out;
+err:
+# ifdef __win32__
+        __threadErrno = __WIN32_ERR(GetLastError());
+# endif
+        error = __mkSmallInteger(__threadErrno);
+        goto out;
     }
     RETURN (self);
 
@@ -4916,28 +5008,29 @@
 %}.
 
     error notNil ifTrue:[
-	error isInteger ifTrue:[
-	    lastErrorNumber := error.
-	    mode == #readonly ifTrue:[
-		self ioError:error.
-	    ] ifFalse:[
-		self writeError:error.
-	    ].
-	    ^ self.
-	].
-	self primitiveFailed:error.
-	^ self.
+        error isInteger ifTrue:[
+            lastErrorNumber := error.
+            mode == #readonly ifTrue:[
+                self ioError:error.
+            ] ifFalse:[
+                self writeError:error.
+            ].
+            ^ self.
+        ].
+        self primitiveFailed:error.
+        ^ self.
     ].
 
     "/ fallback for rel5
 
     fp := handle.
     fp notNil ifTrue:[
-	handle := nil.
-	self closeFile:fp
+        handle := nil.
+        self closeFile:fp
     ]
 
     "Modified: / 19-04-2018 / 10:57:54 / stefan"
+    "Modified: / 22-11-2018 / 12:18:22 / Stefan Vogel"
 !
 
 closeFile:handle
@@ -4967,57 +5060,62 @@
 
     if (__isStringLike(openmode)) {
 #ifdef __win32__
-	__stxWrapApiEnterCritical();
+        __stxWrapApiEnterCritical();
 #endif
-	if (__isSmallInteger(aFileDescriptor)) {
-	    fd = __intVal(aFileDescriptor);
-	}
+        if (__isSmallInteger(aFileDescriptor)) {
+            fd = __intVal(aFileDescriptor);
+        }
 #ifdef __win32__
-	else if (__isExternalAddressLike(aFileDescriptor)) {
-	    fd = _open_osfhandle((long)__externalAddressVal(aFileDescriptor), O_BINARY);
-	    if (fd < 0) {
-		if (__threadErrno == 0) {
-		    // no more file descriptors
-		    __threadErrno = EMFILE;
-		}
-		error = __mkSmallInteger(__threadErrno);
-		__stxWrapApiLeaveCritical();
-		goto out;
-	    }
-	}
+        else if (__isExternalAddressLike(aFileDescriptor)) {
+            fd = _open_osfhandle((long)__externalAddressVal(aFileDescriptor), O_BINARY);
+            if (fd < 0) {
+                if (__threadErrno == 0) {
+                    // no more file descriptors
+                    __threadErrno = EMFILE;
+                }
+                error = __mkSmallInteger(__WIN32_ERR(GetLastError()));
+                __stxWrapApiLeaveCritical();
+                goto out;
+            }
+        }
 #endif
-	f = (FILEPOINTER) fdopen(fd, (char *)__stringVal(openmode));
+        f = (FILEPOINTER) fdopen(fd, (char *)__stringVal(openmode));
 #ifdef __win32__
-	__stxWrapApiLeaveCritical();
+        __stxWrapApiLeaveCritical();
 #endif
-	if (f == NULL) {
-	    error =__mkSmallInteger(__threadErrno);
-	} else {
-	    if (@global(FileOpenTrace) == true) {
-		fprintf(stderr, "fdopen [ExternalStream] %"_ld_" (%"_lx_") -> %"_lx_"\n", (INT)fd, (INT)fd, (INT)f);
-	    }
-
-	    fp = __MKFILEPOINTER(f); __INST(handle) = fp; __STORE(self, fp);
-	}
+        if (f == NULL) {
+# ifdef __win32__
+            __threadErrno = __WIN32_ERR(GetLastError());
+# endif
+            error =__mkSmallInteger(__threadErrno);
+        } else {
+            if (@global(FileOpenTrace) == true) {
+                fprintf(stderr, "fdopen [ExternalStream] %"_ld_" (%"_lx_") -> %"_lx_"\n", (INT)fd, (INT)fd, (INT)f);
+            }
+
+            fp = __MKFILEPOINTER(f); __INST(handle) = fp; __STORE(self, fp);
+        }
     }
 out:;
 %}.
     error notNil ifTrue:[
-	"
-	 the open failed for some reason ...
-	"
-	OperatingSystem closeFd:aFileDescriptor.
-	lastErrorNumber := error.
-	position := nil.
-	^ self openError:error
+        "
+         the open failed for some reason ...
+        "
+        OperatingSystem closeFd:aFileDescriptor.
+        lastErrorNumber := error.
+        position := nil.
+        ^ self openError:error
     ].
 
     position := 0.
     buffered isNil ifTrue:[
-	buffered := true.       "default is buffered"
+        buffered := true.       "default is buffered"
     ].
     handleType := handleTypeSymbol.
     self registerForFinalization.
+
+    "Modified: / 22-11-2018 / 14:39:27 / Stefan Vogel"
 !
 
 dupFd
@@ -5068,44 +5166,49 @@
 # if 1
        f = fopen((char *) __stringVal(aPath), (char *) __stringVal(openModeString));
 # else
-	__BEGIN_INTERRUPTABLE__
-	do {
-	    f = fopen((char *) __stringVal(aPath), (char *) __stringVal(openModeString));
-	} while ((f == NULL) && (__threadErrno == EINTR));
-	__END_INTERRUPTABLE__
+        __BEGIN_INTERRUPTABLE__
+        do {
+            f = fopen((char *) __stringVal(aPath), (char *) __stringVal(openModeString));
+        } while ((f == NULL) && (__threadErrno == EINTR));
+        __END_INTERRUPTABLE__
 # endif
 #else /* UNIX */
-	__BEGIN_INTERRUPTABLE__
-	do {
-	    f = fopen((char *) __stringVal(aPath), (char *) __stringVal(openModeString));
-	} while ((f == NULL) && (__threadErrno == EINTR));
-	__END_INTERRUPTABLE__
+        __BEGIN_INTERRUPTABLE__
+        do {
+            f = fopen((char *) __stringVal(aPath), (char *) __stringVal(openModeString));
+        } while ((f == NULL) && (__threadErrno == EINTR));
+        __END_INTERRUPTABLE__
 #endif /* UNIX */
-	if (f == NULL) {
-	    error = __mkSmallInteger(__threadErrno);
-	} else {
-	    if (@global(FileOpenTrace) == true) {
-		fprintf(stderr, "fopen %s [ExternalStream] -> %"_lx_"\n", __stringVal(aPath), (INT)f);
-	    }
-	    fp = __MKFILEPOINTER(f); __INST(handle) = fp; __STORE(self, fp);
-	    __INST(handleType) = @symbol(filePointer);
-	    ok = true;
-	}
+        if (f == NULL) {
+# ifdef __win32__
+            __threadErrno = __WIN32_ERR(GetLastError());
+# endif
+            error = __mkSmallInteger(__threadErrno);
+        } else {
+            if (@global(FileOpenTrace) == true) {
+                fprintf(stderr, "fopen %s [ExternalStream] -> %"_lx_"\n", __stringVal(aPath), (INT)f);
+            }
+            fp = __MKFILEPOINTER(f); __INST(handle) = fp; __STORE(self, fp);
+            __INST(handleType) = @symbol(filePointer);
+            ok = true;
+        }
     }
 %}.
     ok ifTrue:[
-	position := 0.
-	self registerForFinalization.
-	^ self.
+        position := 0.
+        self registerForFinalization.
+        ^ self.
     ].
     error notNil ifTrue:[
-	"
-	 the open failed for some reason ...
-	"
-	lastErrorNumber := error.
-	self openError:error.
+        "
+         the open failed for some reason ...
+        "
+        lastErrorNumber := error.
+        self openError:error.
     ].
     self primitiveFailed.
+
+    "Modified: / 22-11-2018 / 14:49:56 / Stefan Vogel"
 !
 
 reOpen
@@ -5228,28 +5331,33 @@
      || (__INST(handleType) == @symbol(socketFilePointer))
      || (__INST(handleType) == @symbol(socketHandle))
      || (__INST(handleType) == @symbol(pipeFilePointer))) {
-	if (((fp = __INST(handle)) != nil)
-	    && (__INST(mode) != @symbol(writeonly))
-	) {
-	    f = __FILEVal(fp);
-
-	    _buffered = (__INST(buffered) == true);
-	    if (_buffered) {
-		__READING__(f)
-	    }
-	    __READBYTE__(ret, f, &ch, _buffered, __INST(handleType));
-
-	    if (ret > 0) {
-		RETURN(nil)
-	    }
-	    if (ret < 0) {
-		RETURN(__mkSmallInteger(__threadErrno));
-	    } else /* ret == 0 */ {
-		RETURN(__mkSmallInteger(0)); /* EOF */
-	    }
-	}
+        if (((fp = __INST(handle)) != nil)
+            && (__INST(mode) != @symbol(writeonly))
+        ) {
+            f = __FILEVal(fp);
+
+            _buffered = (__INST(buffered) == true);
+            if (_buffered) {
+                __READING__(f)
+            }
+            __READBYTE__(ret, f, &ch, _buffered, __INST(handleType));
+
+            if (ret > 0) {
+                RETURN(nil)
+            }
+            if (ret < 0) {
+# ifdef __win32__
+                __threadErrno = __WIN32_ERR(GetLastError());
+# endif
+                RETURN(__mkSmallInteger(__threadErrno));
+            } else /* ret == 0 */ {
+                RETURN(__mkSmallInteger(0)); /* EOF */
+            }
+        }
     }
 %}.
+
+    "Modified: / 22-11-2018 / 15:07:16 / Stefan Vogel"
 !
 
 numAvailable
@@ -5271,18 +5379,18 @@
     STObject handle = self.instVarAt(I_handle);
 
     if (handle != STObject.Nil) {
-	STObject next;
-
-	if (self.instVarAt(I_binary) == STObject.True) {
-	    next = handle.nextByte();
-	} else {
-	    next = handle.nextChar();
-	}
-	if (next != STObject.EOF) {
-	    self.instVarAt_put(I_position, STObject.Nil);
-	    return __c__._RETURN( next );
-	}
-	self.instVarAt_put(I_hitEOF, STObject.True);
+        STObject next;
+
+        if (self.instVarAt(I_binary) == STObject.True) {
+            next = handle.nextByte();
+        } else {
+            next = handle.nextChar();
+        }
+        if (next != STObject.EOF) {
+            self.instVarAt_put(I_position, STObject.Nil);
+            return __c__._RETURN( next );
+        }
+        self.instVarAt_put(I_hitEOF, STObject.True);
     }
 #else
     FILEPOINTER f;
@@ -5296,65 +5404,70 @@
      || (__INST(handleType) == @symbol(socketFilePointer))
      || (__INST(handleType) == @symbol(socketHandle))
      || (__INST(handleType) == @symbol(pipeFilePointer))) {
-	if (((fp = __INST(handle)) != nil)
-	    && (__INST(mode) != @symbol(writeonly))
-	) {
-	    f = __FILEVal(fp);
-
-	    _buffered = (__INST(buffered) == true);
-	    if (_buffered) {
-		__READING__(f)
-	    }
-	    __READBYTE__(ret, f, &ch, _buffered, __INST(handleType));
-
-	    if (ret > 0) {
-		pos = __INST(position);
-		if (__isSmallInteger(pos)) {
-		    OBJ t;
-
-		    t = __MKINT(__intVal(pos) + 1); __INST(position) = t; __STORE(self, t);
-		} else {
-		    __INST(position) = nil; /* i.e. do not know */
-		}
-		if (__INST(binary) == true) {
-		    RETURN ( __mkSmallInteger(ch) );
-		}
-		RETURN ( __MKCHARACTER(ch) );
-	    }
-
-	    __INST(position) = nil;
-	    if (ret < 0) {
-		error = __mkSmallInteger(__threadErrno);
-	    } else /* ret == 0 */ {
-		__INST(hitEOF) = true;
-	    }
-	}
+        if (((fp = __INST(handle)) != nil)
+            && (__INST(mode) != @symbol(writeonly))
+        ) {
+            f = __FILEVal(fp);
+
+            _buffered = (__INST(buffered) == true);
+            if (_buffered) {
+                __READING__(f)
+            }
+            __READBYTE__(ret, f, &ch, _buffered, __INST(handleType));
+
+            if (ret > 0) {
+                pos = __INST(position);
+                if (__isSmallInteger(pos)) {
+                    OBJ t;
+
+                    t = __MKINT(__intVal(pos) + 1); __INST(position) = t; __STORE(self, t);
+                } else {
+                    __INST(position) = nil; /* i.e. do not know */
+                }
+                if (__INST(binary) == true) {
+                    RETURN ( __mkSmallInteger(ch) );
+                }
+                RETURN ( __MKCHARACTER(ch) );
+            }
+
+            __INST(position) = nil;
+            if (ret < 0) {
+# ifdef __win32__
+                __threadErrno = __WIN32_ERR(GetLastError());
+# endif
+                error = __mkSmallInteger(__threadErrno);
+            } else /* ret == 0 */ {
+                __INST(hitEOF) = true;
+            }
+        }
     }
 #endif /* not SCHTEAM */
 %}.
     hitEOF ifTrue:[^ self pastEndRead].
     error notNil ifTrue:[
-	lastErrorNumber := error.
-	^ self readError:error
+        lastErrorNumber := error.
+        ^ self readError:error
     ].
     handle isNil ifTrue:[^ self errorNotOpen].
     (mode == #writeonly) ifTrue:[^ self errorWriteOnly].
 
     readAhead notNil ifTrue:[
-	c := readAhead.
-	readAhead := nil.
-	^ c.
+        c := readAhead.
+        readAhead := nil.
+        ^ c.
     ].
 
     "unknown handleType - future"
     c := self nextByteFromFile:handle.
     c isNil ifTrue:[
-	^ self pastEndRead.
+        ^ self pastEndRead.
     ].
     binary ifTrue:[
-	^ c
+        ^ c
     ].
     ^ Character value:c
+
+    "Modified: / 22-11-2018 / 14:44:30 / Stefan Vogel"
 !
 
 next:count
@@ -5395,64 +5508,69 @@
      || (__INST(handleType) == @symbol(socketFilePointer))
      || (__INST(handleType) == @symbol(socketHandle))
      || (__INST(handleType) == @symbol(pipeFilePointer))) {
-	if (((fp = __INST(handle)) != nil)
-	    && (__INST(mode) != @symbol(writeonly))
-	) {
-	    f = __FILEVal(fp);
-
-	    _buffered = (__INST(buffered) == true);
-	    if (_buffered) {
-		__READING__(f)
-	    }
-	    __READBYTE__(ret, f, &ch, _buffered, __INST(handleType));
-
-	    if (ret > 0) {
-		pos = __INST(position);
-		if (__isSmallInteger(pos)) {
-		    OBJ t;
-
-		    t = __MKINT(__intVal(pos) + 1); __INST(position) = t; __STORE(self, t);
-		} else {
-		    __INST(position) = nil; /* i.e. do not know */
-		}
-		if (__INST(binary) == true) {
-		    RETURN ( __mkSmallInteger(ch) );
-		}
-		RETURN ( __MKCHARACTER(ch) );
-	    }
-
-	    __INST(position) = nil;
-	    if (ret < 0) {
-		error = __mkSmallInteger(__threadErrno);
-	    } else /* ret == 0 */ {
-		__INST(hitEOF) = true;
-	    }
-	}
+        if (((fp = __INST(handle)) != nil)
+            && (__INST(mode) != @symbol(writeonly))
+        ) {
+            f = __FILEVal(fp);
+
+            _buffered = (__INST(buffered) == true);
+            if (_buffered) {
+                __READING__(f)
+            }
+            __READBYTE__(ret, f, &ch, _buffered, __INST(handleType));
+
+            if (ret > 0) {
+                pos = __INST(position);
+                if (__isSmallInteger(pos)) {
+                    OBJ t;
+
+                    t = __MKINT(__intVal(pos) + 1); __INST(position) = t; __STORE(self, t);
+                } else {
+                    __INST(position) = nil; /* i.e. do not know */
+                }
+                if (__INST(binary) == true) {
+                    RETURN ( __mkSmallInteger(ch) );
+                }
+                RETURN ( __MKCHARACTER(ch) );
+            }
+
+            __INST(position) = nil;
+            if (ret < 0) {
+# ifdef __win32__
+                __threadErrno = __WIN32_ERR(GetLastError());
+# endif
+                error = __mkSmallInteger(__threadErrno);
+            } else /* ret == 0 */ {
+                __INST(hitEOF) = true;
+            }
+        }
     }
 %}.
     hitEOF ifTrue:[^ nil].
     error notNil ifTrue:[
-	lastErrorNumber := error.
-	^ self readError:error.
+        lastErrorNumber := error.
+        ^ self readError:error.
     ].
     handle isNil ifTrue:[^ self errorNotOpen].
     (mode == #writeonly) ifTrue:[^ self errorWriteOnly].
 
     readAhead notNil ifTrue:[
-	c := readAhead.
-	readAhead := nil.
-	^ c.
+        c := readAhead.
+        readAhead := nil.
+        ^ c.
     ].
 
     "unknown handleType - future"
     c := self nextByteFromFile:handle.
     c isNil ifTrue:[
-	^ nil.
+        ^ nil.
     ].
     binary == true ifTrue:[
-	^ c
+        ^ c
     ].
     ^ Character value:c
+
+    "Modified: / 22-11-2018 / 14:46:49 / Stefan Vogel"
 !
 
 peek
@@ -5470,11 +5588,11 @@
     OBJ ra;
 
     if ((ra = __INST(readAhead)) != nil) {
-	if (__INST(binary) == true) {
-	    RETURN ( ra );
-	}
-	c = __intVal(ra);
-	RETURN ( __MKCHARACTER(c) );
+        if (__INST(binary) == true) {
+            RETURN ( ra );
+        }
+        c = __intVal(ra);
+        RETURN ( __MKCHARACTER(c) );
     }
 
     __INST(lastErrorNumber) = nil;
@@ -5484,47 +5602,52 @@
      || (__INST(handleType) == @symbol(socketFilePointer))
      || (__INST(handleType) == @symbol(socketHandle))
      || (__INST(handleType) == @symbol(pipeFilePointer))) {
-	if (((fp = __INST(handle)) != nil)
-	    && (__INST(mode) != @symbol(writeonly))
-	) {
-	    f = __FILEVal(fp);
-	    _buffered = (__INST(buffered) == true);
-	    if (_buffered) {
-		__READING__(f)
-	    }
-	    __READBYTE__(ret, f, &c, _buffered, __INST(handleType));
-
-	    if (ret > 0) {
-		__UNGETC__(c, f, _buffered);
-
-		if (__INST(binary) == true) {
-		    RETURN ( __mkSmallInteger(c) );
-		}
-		RETURN ( __MKCHARACTER(c) );
-	    }
-	    if (ret < 0) {
-		error = __mkSmallInteger(__threadErrno);
-	    } else /* ret == 0 */ {
-		__INST(hitEOF) = true;
-	    }
-	}
+        if (((fp = __INST(handle)) != nil)
+            && (__INST(mode) != @symbol(writeonly))
+        ) {
+            f = __FILEVal(fp);
+            _buffered = (__INST(buffered) == true);
+            if (_buffered) {
+                __READING__(f)
+            }
+            __READBYTE__(ret, f, &c, _buffered, __INST(handleType));
+
+            if (ret > 0) {
+                __UNGETC__(c, f, _buffered);
+
+                if (__INST(binary) == true) {
+                    RETURN ( __mkSmallInteger(c) );
+                }
+                RETURN ( __MKCHARACTER(c) );
+            }
+            if (ret < 0) {
+# ifdef __win32__
+                __threadErrno = __WIN32_ERR(GetLastError());
+# endif
+                error = __mkSmallInteger(__threadErrno);
+            } else /* ret == 0 */ {
+                __INST(hitEOF) = true;
+            }
+        }
     }
 %}.
     hitEOF ifTrue:[^ self pastEndRead].
     error notNil ifTrue:[
-	lastErrorNumber := error.
-	^ self readError:error.
+        lastErrorNumber := error.
+        ^ self readError:error.
     ].
     handle isNil ifTrue:[^ self errorNotOpen].
     (mode == #writeonly) ifTrue:[^ self errorWriteOnly].
 
     readAhead isNil ifTrue:[
-	readAhead := self nextOrNil.
-	readAhead isNil ifTrue:[
-	    ^ self pastEndRead.
-	].
+        readAhead := self nextOrNil.
+        readAhead isNil ifTrue:[
+            ^ self pastEndRead.
+        ].
     ].
     ^ readAhead
+
+    "Modified: / 22-11-2018 / 14:50:10 / Stefan Vogel"
 !
 
 peekOrNil
@@ -5542,11 +5665,11 @@
     OBJ ra;
 
     if ((ra = __INST(readAhead)) != nil) {
-	if (__INST(binary) == true) {
-	    RETURN ( ra );
-	}
-	c = __intVal(ra);
-	RETURN ( __MKCHARACTER(c) );
+        if (__INST(binary) == true) {
+            RETURN ( ra );
+        }
+        c = __intVal(ra);
+        RETURN ( __MKCHARACTER(c) );
     }
 
     __INST(lastErrorNumber) = nil;
@@ -5556,44 +5679,49 @@
      || (__INST(handleType) == @symbol(socketFilePointer))
      || (__INST(handleType) == @symbol(socketHandle))
      || (__INST(handleType) == @symbol(pipeFilePointer))) {
-	if (((fp = __INST(handle)) != nil)
-	    && (__INST(mode) != @symbol(writeonly))
-	) {
-	    f = __FILEVal(fp);
-	    _buffered = (__INST(buffered) == true);
-	    if (_buffered) {
-		__READING__(f)
-	    }
-	    __READBYTE__(ret, f, &c, _buffered, __INST(handleType));
-
-	    if (ret > 0) {
-		__UNGETC__(c, f, _buffered);
-
-		if (__INST(binary) == true) {
-		    RETURN ( __mkSmallInteger(c) );
-		}
-		RETURN ( __MKCHARACTER(c) );
-	    }
-	    if (ret < 0) {
-		error = __mkSmallInteger(__threadErrno);
-	    } else /* ret == 0 */ {
-		__INST(hitEOF) = true;
-	    }
-	}
+        if (((fp = __INST(handle)) != nil)
+            && (__INST(mode) != @symbol(writeonly))
+        ) {
+            f = __FILEVal(fp);
+            _buffered = (__INST(buffered) == true);
+            if (_buffered) {
+                __READING__(f)
+            }
+            __READBYTE__(ret, f, &c, _buffered, __INST(handleType));
+
+            if (ret > 0) {
+                __UNGETC__(c, f, _buffered);
+
+                if (__INST(binary) == true) {
+                    RETURN ( __mkSmallInteger(c) );
+                }
+                RETURN ( __MKCHARACTER(c) );
+            }
+            if (ret < 0) {
+# ifdef __win32__
+                __threadErrno = __WIN32_ERR(GetLastError());
+# endif
+                error = __mkSmallInteger(__threadErrno);
+            } else /* ret == 0 */ {
+                __INST(hitEOF) = true;
+            }
+        }
     }
 %}.
     hitEOF ifTrue:[^ nil].
     error notNil ifTrue:[
-	lastErrorNumber := error.
-	^ self readError:error.
+        lastErrorNumber := error.
+        ^ self readError:error.
     ].
     handle isNil ifTrue:[^ self errorNotOpen].
     (mode == #writeonly) ifTrue:[^ self errorWriteOnly].
 
     readAhead isNil ifTrue:[
-	readAhead := self nextOrNil.
+        readAhead := self nextOrNil.
     ].
     ^ readAhead
+
+    "Modified: / 22-11-2018 / 14:50:22 / Stefan Vogel"
 !
 
 upToEnd
@@ -5688,11 +5816,11 @@
     char c;
 
     if (__INST(hitEOF) == true) {
-	RETURN (true);
+        RETURN (true);
     }
     lim = __INST(readLimit);
     if (lim != nil && __signedLongIntVal(__INST(position)) >= __signedLongIntVal(lim)) {
-	RETURN (true);
+        RETURN (true);
     }
 
     __INST(lastErrorNumber) = nil;
@@ -5702,42 +5830,45 @@
      || (__INST(handleType) == @symbol(socketFilePointer))
      || (__INST(handleType) == @symbol(socketHandle))
      || (__INST(handleType) == @symbol(pipeFilePointer))) {
-	if ((fp = __INST(handle)) != nil) {
-	    int _buffered = (__INST(buffered) == true);
-	    int ret;
-	    FILEPOINTER f = __FILEVal(fp);
-
-	    if (_buffered) {
-		__READING__(f);
-	    } else if (__INST(readAhead) != nil) {
-		RETURN (false);
-	    }
-
-	    /*
-	     * read ahead ...
-	     */
-	    do {
+        if ((fp = __INST(handle)) != nil) {
+            int _buffered = (__INST(buffered) == true);
+            int ret;
+            FILEPOINTER f = __FILEVal(fp);
+
+            if (_buffered) {
+                __READING__(f);
+            } else if (__INST(readAhead) != nil) {
+                RETURN (false);
+            }
+
+            /*
+             * read ahead ...
+             */
+            do {
 #ifdef __win32__
-		__READBYTE__(ret, f, &c, _buffered, __INST(handleType));
+                __READBYTE__(ret, f, &c, _buffered, __INST(handleType));
 #else /* not __win32__ */
-		__BEGIN_INTERRUPTABLE__
-		__READBYTE__(ret, f, &c, _buffered, __INST(handleType));
-		__END_INTERRUPTABLE__
+                __BEGIN_INTERRUPTABLE__
+                __READBYTE__(ret, f, &c, _buffered, __INST(handleType));
+                __END_INTERRUPTABLE__
 #endif /* not __win32__ */
-	    } while ((ret < 0) && (__threadErrno == EINTR));
-	    if (ret > 0) {
-		__UNGETC__(c&0xff, f, _buffered);
-		RETURN (false);
-	    }
-	    if (ret == 0) {
-		__INST(hitEOF) = true;
-		RETURN (true);
-	    }
-	    /* ret < 0 -> error */
-	    __INST(lastErrorNumber) = __mkSmallInteger(__threadErrno);
-	}
-	// we do not raise an error here - the next read operation will raise the error.
-	RETURN(false);
+            } while ((ret < 0) && (__threadErrno == EINTR));
+            if (ret > 0) {
+                __UNGETC__(c&0xff, f, _buffered);
+                RETURN (false);
+            }
+            if (ret == 0) {
+                __INST(hitEOF) = true;
+                RETURN (true);
+            }
+            /* ret < 0 -> error */
+# ifdef __win32__
+            __threadErrno = __WIN32_ERR(GetLastError());
+# endif
+            __INST(lastErrorNumber) = __mkSmallInteger(__threadErrno);
+        }
+        // we do not raise an error here - the next read operation will raise the error.
+        RETURN(false);
     }
 %}.
 
@@ -5745,7 +5876,8 @@
     "/ migration support
     ^ self atEndFile:handle
 
-    "Modified: / 30.10.1998 / 20:16:06 / cg"
+    "Modified: / 30-10-1998 / 20:16:06 / cg"
+    "Modified: / 22-11-2018 / 14:39:54 / Stefan Vogel"
 !
 
 gotErrorOrEOF
@@ -6011,79 +6143,90 @@
     "append an end-of-line character (or CRLF if in crlf mode).
      reimplemented for speed"
 
+    |error|
+
 %{
     if ((__INST(handleType) == nil)
      || (__INST(handleType) == @symbol(filePointer))
      || (__INST(handleType) == @symbol(socketHandle))
      || (__INST(handleType) == @symbol(socketFilePointer))
      || (__INST(handleType) == @symbol(pipeFilePointer))) {
-	OBJ fp;
-
-	__INST(lastErrorNumber) = nil;
-	if (((fp = __INST(handle)) != nil)
-	 && (__INST(mode) != @symbol(readonly))
-	 && (__INST(binary) != true)
-	) {
-	    FILEPOINTER f = __FILEVal(fp);
-	    int _buffered = (__INST(buffered) == true);
-	    int len, cnt;
-	    char *cp;
-
-	    if (_buffered) {
-		__WRITING__(f)
-	    }
-	    {
-		OBJ mode = __INST(eolMode);
-
-		if (mode == @symbol(cr)) {
-		    cp = "\r"; len = 1;
-		} else if (mode == @symbol(crlf)) {
-		    cp = "\r\n"; len = 2;
-		} else if (mode == @symbol(eot)) {
-		    cp = "\004"; len = 1;
-		} else if (mode == @symbol(etx)) {
-		    cp = "\003"; len = 1;
-		} else {
-		    cp = "\n"; len = 1;
-		}
-	    }
+        OBJ fp;
+
+        __INST(lastErrorNumber) = nil;
+        if (((fp = __INST(handle)) != nil)
+         && (__INST(mode) != @symbol(readonly))
+         && (__INST(binary) != true)
+        ) {
+            FILEPOINTER f = __FILEVal(fp);
+            int _buffered = (__INST(buffered) == true);
+            int len, cnt;
+            char *cp;
+
+            if (_buffered) {
+                __WRITING__(f)
+            }
+            {
+                OBJ mode = __INST(eolMode);
+
+                if (mode == @symbol(cr)) {
+                    cp = "\r"; len = 1;
+                } else if (mode == @symbol(crlf)) {
+                    cp = "\r\n"; len = 2;
+                } else if (mode == @symbol(eot)) {
+                    cp = "\004"; len = 1;
+                } else if (mode == @symbol(etx)) {
+                    cp = "\003"; len = 1;
+                } else {
+                    cp = "\n"; len = 1;
+                }
+            }
 #ifdef __win32__
-	    if ((f == __win32_stdout()) || (f == __win32_stderr())) {
-		cnt = __win32_fwrite(cp, 1, len, f);
-	    } else
+            if ((f == __win32_stdout()) || (f == __win32_stderr())) {
+                cnt = __win32_fwrite(cp, 1, len, f);
+            } else
 #endif
-	    {
-		__WRITEBYTES__(cnt, f, cp, len, _buffered, __INST(handleType));
-	    }
-	    if (cnt == len) {
-		if (__isSmallInteger(__INST(position))) {
-		    INT np = __intVal(__INST(position)) + len;
-		    OBJ t;
-
-		    t = __MKINT(np); __INST(position) = t; __STORE(self, t);
-		} else {
-		    __INST(position) = nil; /* i.e: don't know */
-		}
-		RETURN ( self );
-	    }
-	    __INST(lastErrorNumber) = __mkSmallInteger(__threadErrno);
-	}
+            {
+                __WRITEBYTES__(cnt, f, cp, len, _buffered, __INST(handleType));
+            }
+            if (cnt == len) {
+                if (__isSmallInteger(__INST(position))) {
+                    INT np = __intVal(__INST(position)) + len;
+                    OBJ t;
+
+                    t = __MKINT(np); __INST(position) = t; __STORE(self, t);
+                } else {
+                    __INST(position) = nil; /* i.e: don't know */
+                }
+                RETURN ( self );
+            }
+# ifdef __win32__
+            __threadErrno = __WIN32_ERR(GetLastError());
+# endif
+            error = __mkSmallInteger(__threadErrno);
+        }
     }
 %}.
-    lastErrorNumber notNil ifTrue:[self writeError. ^ self].
+    error notNil ifTrue:[
+        lastErrorNumber := error.
+        self writeError:error.
+        ^ self
+    ].
     handle isNil ifTrue:[self errorNotOpen. ^ self].
     (mode == #readonly) ifTrue:[self errorReadOnly. ^ self].
     binary ifTrue:[self errorBinary. ^ self].
 
     (eolMode == #cr) ifTrue:[
-	self nextPut:(Character return).
-	^ self
+        self nextPut:(Character return).
+        ^ self
     ].
     (eolMode == #crlf) ifTrue:[
-	self nextPut:(Character return).
+        self nextPut:(Character return).
     ].
     self nextPut:(Character nl).
     ^ self
+
+    "Modified: / 22-11-2018 / 14:41:46 / Stefan Vogel"
 !
 
 flush
@@ -6136,9 +6279,9 @@
 
     if ((handle != STObject.Nil)
      && (aCharacter.isSTCharacter())) {
-	handle.writeChar( aCharacter );
-	self.instVarAt_put(I_position, STObject.Nil);
-	return __c__._RETURN_self();
+        handle.writeChar( aCharacter );
+        self.instVarAt_put(I_position, STObject.Nil);
+        return __c__._RETURN_self();
     }
 #else
     __INST(lastErrorNumber) = nil;
@@ -6147,109 +6290,114 @@
      || (__INST(handleType) == @symbol(socketFilePointer))
      || (__INST(handleType) == @symbol(socketHandle))
      || (__INST(handleType) == @symbol(pipeFilePointer))) {
-	OBJ fp;
-
-	if (((fp = __INST(handle)) != nil)
-	 && (__INST(mode) != @symbol(readonly))
-	) {
-	    FILEPOINTER f = __FILEVal(fp);
-	    int _buffered = (__INST(buffered) == true);
-	    int cnt;
-	    char buff[2];
-	    int nBytes = 1;
-
-	    if (__INST(binary) != true) {
-		if (__isCharacter(aCharacter)) {
-		    unsigned int codePoint = __intVal(__characterVal(aCharacter));
-		    if (codePoint <= 0xFF) {
-			unsigned char c = codePoint;
-			buff[0] = c; nBytes = 1;
-
-			if (c == '\n') {
-			    OBJ mode = __INST(eolMode);
-			    if (mode == @symbol(nl)) {
-				// no EOL translation
-			    } else if (mode == nil) {
-				// no EOL translation
-			    } else if (mode == @symbol(cr)) {
-				buff[0] = '\r';
-			    } else if (mode == @symbol(eot)) {
-				buff[0] = '\004';
-			    } else if (mode == @symbol(etx)) {
-				buff[0] = '\003';
-			    } else if (mode == @symbol(crlf)) {
-				buff[0] = '\r';
-				buff[1] = '\n';
-				nBytes = 2;
-			    }
-			}
+        OBJ fp;
+
+        if (((fp = __INST(handle)) != nil)
+         && (__INST(mode) != @symbol(readonly))
+        ) {
+            FILEPOINTER f = __FILEVal(fp);
+            int _buffered = (__INST(buffered) == true);
+            int cnt;
+            char buff[2];
+            int nBytes = 1;
+
+            if (__INST(binary) != true) {
+                if (__isCharacter(aCharacter)) {
+                    unsigned int codePoint = __intVal(__characterVal(aCharacter));
+                    if (codePoint <= 0xFF) {
+                        unsigned char c = codePoint;
+                        buff[0] = c; nBytes = 1;
+
+                        if (c == '\n') {
+                            OBJ mode = __INST(eolMode);
+                            if (mode == @symbol(nl)) {
+                                // no EOL translation
+                            } else if (mode == nil) {
+                                // no EOL translation
+                            } else if (mode == @symbol(cr)) {
+                                buff[0] = '\r';
+                            } else if (mode == @symbol(eot)) {
+                                buff[0] = '\004';
+                            } else if (mode == @symbol(etx)) {
+                                buff[0] = '\003';
+                            } else if (mode == @symbol(crlf)) {
+                                buff[0] = '\r';
+                                buff[1] = '\n';
+                                nBytes = 2;
+                            }
+                        }
     doWrite:
-			if (! f) {
-			    fprintf(stderr, "oops - fileHandle is NULL in nextPut:\n");
-			    __INST(handle) = nil;
-			    goto out;
-			}
-
-			if (_buffered) {
-			    __WRITING__(f)
-			}
+                        if (! f) {
+                            fprintf(stderr, "oops - fileHandle is NULL in nextPut:\n");
+                            __INST(handle) = nil;
+                            goto out;
+                        }
+
+                        if (_buffered) {
+                            __WRITING__(f)
+                        }
 # ifdef __win32__
-			if ((f == __win32_stdout()) || (f == __win32_stderr())) {
-			    cnt = __win32_fwrite(buff, 1, nBytes, f);
-			} else
+                        if ((f == __win32_stdout()) || (f == __win32_stderr())) {
+                            cnt = __win32_fwrite(buff, 1, nBytes, f);
+                        } else
 # endif
-			{
-			    __WRITEBYTES__(cnt, f, buff, nBytes, _buffered, __INST(handleType));
-			}
-			if (cnt == nBytes) {
-			    if (__isSmallInteger(__INST(position))) {
-				INT np = __intVal(__INST(position)) + nBytes;
-				OBJ t;
-
-				t = __MKINT(np); __INST(position) = t; __STORE(self, t);
-			    } else {
-				__INST(position) = nil; /* i.e. do not know */
-			    }
-			    RETURN ( self );
-			}
-			error = __mkSmallInteger(__threadErrno);
-		    }
-		}
-	    } else {
-		if (__isSmallInteger(aCharacter)) {
-		    unsigned char c = __intVal(aCharacter);
-		    buff[0] = c; nBytes = 1;
-		    goto doWrite;
-		}
-	    }
-	}
+                        {
+                            __WRITEBYTES__(cnt, f, buff, nBytes, _buffered, __INST(handleType));
+                        }
+                        if (cnt == nBytes) {
+                            if (__isSmallInteger(__INST(position))) {
+                                INT np = __intVal(__INST(position)) + nBytes;
+                                OBJ t;
+
+                                t = __MKINT(np); __INST(position) = t; __STORE(self, t);
+                            } else {
+                                __INST(position) = nil; /* i.e. do not know */
+                            }
+                            RETURN ( self );
+                        }
+# ifdef __win32__
+                        __threadErrno = __WIN32_ERR(GetLastError());
+# endif
+                        error = __mkSmallInteger(__threadErrno);
+                    }
+                }
+            } else {
+                if (__isSmallInteger(aCharacter)) {
+                    unsigned char c = __intVal(aCharacter);
+                    buff[0] = c; nBytes = 1;
+                    goto doWrite;
+                }
+            }
+        }
     }
 out: ;
 #endif /* not SCHTEAM */
 %}.
     error notNil ifTrue:[
-	lastErrorNumber := error.
-	self writeError:error.
-	^ self
+        lastErrorNumber := error.
+        self writeError:error.
+        ^ self
     ].
     handle isNil ifTrue:[self errorNotOpen. ^ self].
     (mode == #readonly) ifTrue:[self errorReadOnly. ^ self].
     binary == true ifTrue:[
-	aCharacter isInteger ifFalse:[
-	    self argumentMustBeInteger.
-	    ^ self.
-	].
+        aCharacter isInteger ifFalse:[
+            self argumentMustBeInteger.
+            ^ self.
+        ].
     ] ifFalse:[
-	(aCharacter isCharacter not
-	 or:[aCharacter codePoint > 16rFF]) ifTrue:[
-	    self argumentMustBeCharacter.
-	    ^ self.
-	].
+        (aCharacter isCharacter not
+         or:[aCharacter codePoint > 16rFF]) ifTrue:[
+            self argumentMustBeCharacter.
+            ^ self.
+        ].
     ].
     "/ migration support
     self
-	nextPutByte:aCharacter asInteger
-	toFile:handle
+        nextPutByte:aCharacter asInteger
+        toFile:handle
+
+    "Modified: / 22-11-2018 / 14:47:13 / Stefan Vogel"
 !
 
 nextPutAll:aCollection
@@ -6264,9 +6412,9 @@
 
     if ((handle != STObject.Nil)
      && (aCollection.isSTString())) {
-	handle.writeCharacters( aCollection.asSTString().characters );
-	self.instVarAt_put(I_position, STObject.Nil);
-	return __c__._RETURN_self();
+        handle.writeCharacters( aCollection.asSTString().characters );
+        self.instVarAt_put(I_position, STObject.Nil);
+        return __c__._RETURN_self();
     }
 #else
 
@@ -6277,169 +6425,174 @@
      || (__INST(handleType) == @symbol(socketFilePointer))
      || (__INST(handleType) == @symbol(socketHandle))
      || (__INST(handleType) == @symbol(pipeFilePointer))) {
-	OBJ fp;
-
-	if (((fp = __INST(handle)) != nil)
-	    && (__INST(mode) != @symbol(readonly))
-	) {
-	    INT len, cnt;
-	    INT o_offs;
-	    FILEPOINTER f = __FILEVal(fp);
-	    int _buffered = (__INST(buffered) == true);
-
-	    if (! f) {
-		fprintf(stderr, "oops - fileHandle is NULL in nextPutAll:\n");
-		__INST(handle) = nil;
-		goto out;
-	    }
-	    if (_buffered) {
-		__WRITING__(f)
-	    }
-
-	    if (__isStringLike(aCollection)) {
-		OBJ mode = __INST(eolMode);
-		char *stringP = __stringVal(aCollection);
-		len = __stringSize(aCollection);
-
-		if (__INST(binary) != true
-		    && ((mode == @symbol(cr))
-			|| (mode == @symbol(etx))
-			|| (mode == @symbol(eot))
-			|| (mode == @symbol(crlf)))
-		    && memchr(stringP, '\n', len) != NULL)
-		{
-		    // there is a '\n' to be translated, replace it into a buffer
-
-		    char *end;
-		    char sep[2];
-		    int sepLen = 1;
-		    int bufLen;
-		    char *buf, *endBuf, *sp, *dp;
-
-		    sep[0] = '\n';
-		    if (mode == @symbol(crlf)) {
-			 sep[0] = '\r'; sep[1] = '\n'; sepLen = 2;
-		    } else if (mode == @symbol(cr)) {
-			 sep[0] = '\r';
-		    } else if (mode == @symbol(eot)) {
-			 sep[0] = '\004';
-		    } else if (mode == @symbol(etx)) {
-			 sep[0] = '\003';
-		    }
-
-		    // estimate size of buffer - assume every 4th char is a separator
-		    bufLen = (sepLen == 1) ? len : (len + ((len/4) + 1) * sepLen);
-		    buf = (char *)malloc(bufLen);
-		    if (buf == NULL) {
-			error = __mkSmallInteger(ENOMEM);
-			goto out;
-		    }
-
-		    endBuf = buf + bufLen;
-		    end = stringP + len;
-		    for (sp = stringP, dp = buf; sp < end; sp++) {
-			char c;
-
-			if ((dp+sepLen) >= endBuf) {
-			    char *newBuf;
-
-			    bufLen = bufLen * 2;
-			    newBuf = (char *)realloc(buf, bufLen);
-			    if (newBuf == NULL) {
-				free(buf);
-				error = __mkSmallInteger(ENOMEM);
-				goto out;
-			    }
-			    endBuf = newBuf + bufLen;
-			    dp = newBuf + (dp-buf);
-			    buf = newBuf;
-			}
-
-			if ((c = *sp) != '\n') {
-			    *dp++ = c;
-			} else {
-			    *dp++ = sep[0];
-			    if (sepLen == 2) {
-				*dp++ = sep[1];
-			    };
-			}
-		    }
-
-		    len = dp - buf;
+        OBJ fp;
+
+        if (((fp = __INST(handle)) != nil)
+            && (__INST(mode) != @symbol(readonly))
+        ) {
+            INT len, cnt;
+            INT o_offs;
+            FILEPOINTER f = __FILEVal(fp);
+            int _buffered = (__INST(buffered) == true);
+
+            if (! f) {
+                fprintf(stderr, "oops - fileHandle is NULL in nextPutAll:\n");
+                __INST(handle) = nil;
+                goto out;
+            }
+            if (_buffered) {
+                __WRITING__(f)
+            }
+
+            if (__isStringLike(aCollection)) {
+                OBJ mode = __INST(eolMode);
+                char *stringP = __stringVal(aCollection);
+                len = __stringSize(aCollection);
+
+                if (__INST(binary) != true
+                    && ((mode == @symbol(cr))
+                        || (mode == @symbol(etx))
+                        || (mode == @symbol(eot))
+                        || (mode == @symbol(crlf)))
+                    && memchr(stringP, '\n', len) != NULL)
+                {
+                    // there is a '\n' to be translated, replace it into a buffer
+
+                    char *end;
+                    char sep[2];
+                    int sepLen = 1;
+                    int bufLen;
+                    char *buf, *endBuf, *sp, *dp;
+
+                    sep[0] = '\n';
+                    if (mode == @symbol(crlf)) {
+                         sep[0] = '\r'; sep[1] = '\n'; sepLen = 2;
+                    } else if (mode == @symbol(cr)) {
+                         sep[0] = '\r';
+                    } else if (mode == @symbol(eot)) {
+                         sep[0] = '\004';
+                    } else if (mode == @symbol(etx)) {
+                         sep[0] = '\003';
+                    }
+
+                    // estimate size of buffer - assume every 4th char is a separator
+                    bufLen = (sepLen == 1) ? len : (len + ((len/4) + 1) * sepLen);
+                    buf = (char *)malloc(bufLen);
+                    if (buf == NULL) {
+                        error = __mkSmallInteger(ENOMEM);
+                        goto out;
+                    }
+
+                    endBuf = buf + bufLen;
+                    end = stringP + len;
+                    for (sp = stringP, dp = buf; sp < end; sp++) {
+                        char c;
+
+                        if ((dp+sepLen) >= endBuf) {
+                            char *newBuf;
+
+                            bufLen = bufLen * 2;
+                            newBuf = (char *)realloc(buf, bufLen);
+                            if (newBuf == NULL) {
+                                free(buf);
+                                error = __mkSmallInteger(ENOMEM);
+                                goto out;
+                            }
+                            endBuf = newBuf + bufLen;
+                            dp = newBuf + (dp-buf);
+                            buf = newBuf;
+                        }
+
+                        if ((c = *sp) != '\n') {
+                            *dp++ = c;
+                        } else {
+                            *dp++ = sep[0];
+                            if (sepLen == 2) {
+                                *dp++ = sep[1];
+                            };
+                        }
+                    }
+
+                    len = dp - buf;
 # ifdef __win32__
-		    if ((f == __win32_stdout()) || (f == __win32_stderr())) {
-			cnt = __win32_fwrite(buf, 1, len, f);
-		    } else
+                    if ((f == __win32_stdout()) || (f == __win32_stderr())) {
+                        cnt = __win32_fwrite(buf, 1, len, f);
+                    } else
 # endif
-		    {
-			__WRITEBYTES__(cnt, f, buf, len, _buffered, __INST(handleType));
-		    }
-		    free(buf);
-		} else  {  // No EOL conversion needed
+                    {
+                        __WRITEBYTES__(cnt, f, buf, len, _buffered, __INST(handleType));
+                    }
+                    free(buf);
+                } else  {  // No EOL conversion needed
 # ifdef __win32__
-		    if ((f == __win32_stdout()) || (f == __win32_stderr())) {
-			cnt = __win32_fwrite(stringP, 1, len, f);
-		    } else
+                    if ((f == __win32_stdout()) || (f == __win32_stderr())) {
+                        cnt = __win32_fwrite(stringP, 1, len, f);
+                    } else
 # endif
-		    {
-			o_offs = stringP - (char *)__InstPtr(aCollection);
-			__WRITEBYTES_OBJ__(cnt, f, aCollection, o_offs, len, _buffered, __INST(handleType));
-		    }
-		}
-	    } else {   // Not a String
-		if (__INST(binary) == true) {
-		    INT offs;
-
-		    if (__isByteArrayLike(aCollection)) {
-			offs = 0;
-			len = __byteArraySize(aCollection);
-		    } else if (__isBytes(aCollection)) {
-			offs = __OBJS2BYTES__(__intVal(__ClassInstPtr(__qClass(aCollection))->c_ninstvars));
-			len = __byteArraySize(aCollection) - offs;
-		    } else
-			goto out;
+                    {
+                        o_offs = stringP - (char *)__InstPtr(aCollection);
+                        __WRITEBYTES_OBJ__(cnt, f, aCollection, o_offs, len, _buffered, __INST(handleType));
+                    }
+                }
+            } else {   // Not a String
+                if (__INST(binary) == true) {
+                    INT offs;
+
+                    if (__isByteArrayLike(aCollection)) {
+                        offs = 0;
+                        len = __byteArraySize(aCollection);
+                    } else if (__isBytes(aCollection)) {
+                        offs = __OBJS2BYTES__(__intVal(__ClassInstPtr(__qClass(aCollection))->c_ninstvars));
+                        len = __byteArraySize(aCollection) - offs;
+                    } else
+                        goto out;
 # ifdef __win32__
-		    if ((f == __win32_stdout()) || (f == __win32_stderr())) {
-			cnt = __win32_fwrite(__stringVal(aCollection), 1, len, f);
-		    } else
+                    if ((f == __win32_stdout()) || (f == __win32_stderr())) {
+                        cnt = __win32_fwrite(__stringVal(aCollection), 1, len, f);
+                    } else
 # endif
-		    {
-			o_offs = (char *)(__ByteArrayInstPtr(aCollection)->ba_element) - (char *)__InstPtr(aCollection);
-			o_offs += offs;
-			__WRITEBYTES_OBJ__(cnt, f, aCollection, o_offs, len, _buffered, __INST(handleType));
-		    }
-		} else  // Not binary mode
-		    goto out;
-	    }
-
-	    // Now check for errors
-	    if (cnt == len) {
-		if (__isSmallInteger(__INST(position))) {
-		    INT np = __intVal(__INST(position)) + len;
-		    OBJ t;
-
-		    t = __MKINT(np); __INST(position) = t; __STORE(self, t);
-		} else {
-		    __INST(position) = nil; /* i.e. do not know */
-		}
-		RETURN (self);
-	    }
-	    fprintf(stderr, "cnt=%"_ld_" len=%"_ld_"\n", (INT)cnt, (INT)len);
-	    error = __mkSmallInteger(__threadErrno);
-	}
+                    {
+                        o_offs = (char *)(__ByteArrayInstPtr(aCollection)->ba_element) - (char *)__InstPtr(aCollection);
+                        o_offs += offs;
+                        __WRITEBYTES_OBJ__(cnt, f, aCollection, o_offs, len, _buffered, __INST(handleType));
+                    }
+                } else  // Not binary mode
+                    goto out;
+            }
+
+            // Now check for errors
+            if (cnt == len) {
+                if (__isSmallInteger(__INST(position))) {
+                    INT np = __intVal(__INST(position)) + len;
+                    OBJ t;
+
+                    t = __MKINT(np); __INST(position) = t; __STORE(self, t);
+                } else {
+                    __INST(position) = nil; /* i.e. do not know */
+                }
+                RETURN (self);
+            }
+# ifdef __win32__
+            __threadErrno = __WIN32_ERR(GetLastError());
+# endif
+            error = __mkSmallInteger(__threadErrno);
+            fprintf(stderr, "cnt=%"_ld_" len=%"_ld_"\n", (INT)cnt, (INT)len);
+        }
     }
 out: ;
 #endif /* not SCHTEAM */
 %}.
     error notNil ifTrue:[
-	lastErrorNumber := error.
-	self writeError:error.
-	^ self
+        lastErrorNumber := error.
+        self writeError:error.
+        ^ self
     ].
     handle isNil ifTrue:[self errorNotOpen. ^ self].
     (mode == #readonly) ifTrue:[self errorReadOnly. ^ self].
 
     ^ super nextPutAll:aCollection
+
+    "Modified: / 22-11-2018 / 11:16:12 / Stefan Vogel"
 !
 
 nextPutAll:initialWriteCount from:buffer startingAt:initialOffset
@@ -6471,178 +6624,183 @@
      || (__INST(handleType) == @symbol(socketFilePointer))
      || (__INST(handleType) == @symbol(socketHandle))
      || (__INST(handleType) == @symbol(pipeFilePointer))) {
-	OBJ fp = __INST(handle);
-
-	if ((fp != nil)
-	 && (__INST(mode) != @symbol(readonly))
-	 && __bothSmallInteger(start, stop)
-	) {
-	    int _buffered = (__INST(buffered) == true);
-	    FILEPOINTER f = __FILEVal(fp);
-	    int offs, len, cnt;
-	    int iStart = __intVal(start);
-	    int iStop = __intVal(stop);
-	    int o_offs;
-
-	    if (_buffered ) {
-		__WRITING__(f)
-	    }
-
-	    if ((iStart < 1) || (iStop < iStart)) {
-		RETURN(self);
-	    }
-	    if (__isStringLike(aCollection)) {
-		char *stringP;
-		OBJ mode = __INST(eolMode);
-
-		len = __stringSize(aCollection);
-		if (iStop > len) {
-		    RETURN(self);
-		}
-		if (iStop > len)
-		    iStop = len;
-		len = iStop - iStart + 1;
-		stringP = __stringVal(aCollection) + iStart - 1;
-
-		if (__INST(binary) != true
-		    && ((mode == @symbol(cr))
-			|| (mode == @symbol(etx))
-			|| (mode == @symbol(eot))
-			|| (mode == @symbol(crlf)))
-		    && memchr(stringP, '\n', len) != NULL)
-		{
-		    // see if there is a \n which needs to be translated, replace it
-
-		    char *end = stringP + len;
-		    char sep[2];
-		    int sepLen = 1;
-		    int bufLen;
-		    char *buf, *endBuf, *sp, *dp;
-
-		    sep[0] = '\n';
-		    if (mode == @symbol(crlf)) {
-			 sep[0] = '\r'; sep[1] = '\n'; sepLen = 2;
-		    } else if (mode == @symbol(cr)) {
-			 sep[0] = '\r';
-		    } else if (mode == @symbol(eot)) {
-			 sep[0] = '\004';
-		    } else if (mode == @symbol(etx)) {
-			 sep[0] = '\003';
-		    }
-
-		    // estimate size of buffer - assume every 4th char is a separator
-		    bufLen = (sepLen == 1) ? len : (len + ((len/4) + 1) * sepLen);
-		    buf = (char *)malloc(bufLen);
-		    if (buf == NULL) {
-			error = __mkSmallInteger(ENOMEM);
-			goto out;
-		    }
-
-		    endBuf = buf + bufLen;
-
-		    for (sp = stringP, dp = buf; sp < end; sp++) {
-			char c;
-
-			if ((dp+sepLen) >= endBuf) {
-			    char *newBuf;
-
-			    bufLen = bufLen * 2;
-			    newBuf = (char *)realloc(buf, bufLen);
-			    if (newBuf == NULL) {
-				free(buf);
-				error = __mkSmallInteger(ENOMEM);
-				goto out;
-			    }
-			    endBuf = newBuf + bufLen;
-			    dp = newBuf + (dp-buf);
-			    buf = newBuf;
-			}
-
-			if ((c = *sp) == '\n') {
-			    *dp++ = sep[0];
-			    if (sepLen == 2) {
-				*dp++ = sep[1];
-			    };
-			} else {
-			    *dp++ = c;
-			}
-		    }
-
-		    len = dp - buf;
+        OBJ fp = __INST(handle);
+
+        if ((fp != nil)
+         && (__INST(mode) != @symbol(readonly))
+         && __bothSmallInteger(start, stop)
+        ) {
+            int _buffered = (__INST(buffered) == true);
+            FILEPOINTER f = __FILEVal(fp);
+            int offs, len, cnt;
+            int iStart = __intVal(start);
+            int iStop = __intVal(stop);
+            int o_offs;
+
+            if (_buffered ) {
+                __WRITING__(f)
+            }
+
+            if ((iStart < 1) || (iStop < iStart)) {
+                RETURN(self);
+            }
+            if (__isStringLike(aCollection)) {
+                char *stringP;
+                OBJ mode = __INST(eolMode);
+
+                len = __stringSize(aCollection);
+                if (iStop > len) {
+                    RETURN(self);
+                }
+                if (iStop > len)
+                    iStop = len;
+                len = iStop - iStart + 1;
+                stringP = __stringVal(aCollection) + iStart - 1;
+
+                if (__INST(binary) != true
+                    && ((mode == @symbol(cr))
+                        || (mode == @symbol(etx))
+                        || (mode == @symbol(eot))
+                        || (mode == @symbol(crlf)))
+                    && memchr(stringP, '\n', len) != NULL)
+                {
+                    // see if there is a \n which needs to be translated, replace it
+
+                    char *end = stringP + len;
+                    char sep[2];
+                    int sepLen = 1;
+                    int bufLen;
+                    char *buf, *endBuf, *sp, *dp;
+
+                    sep[0] = '\n';
+                    if (mode == @symbol(crlf)) {
+                         sep[0] = '\r'; sep[1] = '\n'; sepLen = 2;
+                    } else if (mode == @symbol(cr)) {
+                         sep[0] = '\r';
+                    } else if (mode == @symbol(eot)) {
+                         sep[0] = '\004';
+                    } else if (mode == @symbol(etx)) {
+                         sep[0] = '\003';
+                    }
+
+                    // estimate size of buffer - assume every 4th char is a separator
+                    bufLen = (sepLen == 1) ? len : (len + ((len/4) + 1) * sepLen);
+                    buf = (char *)malloc(bufLen);
+                    if (buf == NULL) {
+                        error = __mkSmallInteger(ENOMEM);
+                        goto out;
+                    }
+
+                    endBuf = buf + bufLen;
+
+                    for (sp = stringP, dp = buf; sp < end; sp++) {
+                        char c;
+
+                        if ((dp+sepLen) >= endBuf) {
+                            char *newBuf;
+
+                            bufLen = bufLen * 2;
+                            newBuf = (char *)realloc(buf, bufLen);
+                            if (newBuf == NULL) {
+                                free(buf);
+                                error = __mkSmallInteger(ENOMEM);
+                                goto out;
+                            }
+                            endBuf = newBuf + bufLen;
+                            dp = newBuf + (dp-buf);
+                            buf = newBuf;
+                        }
+
+                        if ((c = *sp) == '\n') {
+                            *dp++ = sep[0];
+                            if (sepLen == 2) {
+                                *dp++ = sep[1];
+                            };
+                        } else {
+                            *dp++ = c;
+                        }
+                    }
+
+                    len = dp - buf;
 #ifdef __win32__
-		    if ((f == __win32_stdout()) || (f == __win32_stderr())) {
-			cnt = __win32_fwrite(buf, 1, len, f);
-		    } else
+                    if ((f == __win32_stdout()) || (f == __win32_stderr())) {
+                        cnt = __win32_fwrite(buf, 1, len, f);
+                    } else
 #endif
-		    {
-			__WRITEBYTES__(cnt, f, buf, len, _buffered, __INST(handleType));
-		    }
-		    free(buf);
-		} else  {  // No EOL conversion needed
+                    {
+                        __WRITEBYTES__(cnt, f, buf, len, _buffered, __INST(handleType));
+                    }
+                    free(buf);
+                } else  {  // No EOL conversion needed
 #ifdef __win32__
-		    if ((f == __win32_stdout()) || (f == __win32_stderr())) {
-			cnt = __win32_fwrite(stringP, 1, len, f);
-		    } else
+                    if ((f == __win32_stdout()) || (f == __win32_stderr())) {
+                        cnt = __win32_fwrite(stringP, 1, len, f);
+                    } else
 #endif
-		    {
-			o_offs = (char *)__stringVal(aCollection)-(char *)__InstPtr(aCollection);
-			__WRITEBYTES_OBJ__(cnt, f, aCollection, o_offs+iStart-1, len, _buffered, __INST(handleType));
-		    }
-		}
-	    } else {  // Not a string
-		if (__INST(binary) == true) {
-		    int offs;
-
-		    if (__isByteArrayLike(aCollection)) {
-			offs = 0;
-			len = __byteArraySize(aCollection);
-		    } else if (__isBytes(aCollection)) {
-			offs = __OBJS2BYTES__(__intVal(__ClassInstPtr(__qClass(aCollection))->c_ninstvars));
-			len = __byteArraySize(aCollection) - offs;
-		    } else
-			goto out;
-
-		    if (iStop > len) {
-			RETURN(self);
-		    }
-		    if (iStop > len)
-			iStop = len;
-		    len = iStop - iStart + 1;
-		    offs += iStart - 1;
+                    {
+                        o_offs = (char *)__stringVal(aCollection)-(char *)__InstPtr(aCollection);
+                        __WRITEBYTES_OBJ__(cnt, f, aCollection, o_offs+iStart-1, len, _buffered, __INST(handleType));
+                    }
+                }
+            } else {  // Not a string
+                if (__INST(binary) == true) {
+                    int offs;
+
+                    if (__isByteArrayLike(aCollection)) {
+                        offs = 0;
+                        len = __byteArraySize(aCollection);
+                    } else if (__isBytes(aCollection)) {
+                        offs = __OBJS2BYTES__(__intVal(__ClassInstPtr(__qClass(aCollection))->c_ninstvars));
+                        len = __byteArraySize(aCollection) - offs;
+                    } else
+                        goto out;
+
+                    if (iStop > len) {
+                        RETURN(self);
+                    }
+                    if (iStop > len)
+                        iStop = len;
+                    len = iStop - iStart + 1;
+                    offs += iStart - 1;
 #ifdef __win32__
-		    if ((f == __win32_stdout()) || (f == __win32_stderr())) {
-			cnt = __win32_fwrite(__stringVal(aCollection)+iStart-1, 1, len, f);
-		    } else
+                    if ((f == __win32_stdout()) || (f == __win32_stderr())) {
+                        cnt = __win32_fwrite(__stringVal(aCollection)+iStart-1, 1, len, f);
+                    } else
 #endif
-		    {
-			o_offs = (char *)(__ByteArrayInstPtr(aCollection)->ba_element)-(char *)__InstPtr(aCollection);
-			__WRITEBYTES_OBJ__(cnt, f,  aCollection, o_offs+offs, len, _buffered, __INST(handleType));
-		    }
-		} else
-		    goto out;
-	    }
-	    if (cnt == len) {
-		if (__isSmallInteger(__INST(position))) {
-		    INT np = __intVal(__INST(position)) + len;
-		    OBJ t;
-
-		    t = __MKINT(np); __INST(position) = t; __STORE(self, t);
-		} else {
-		    __INST(position) = nil; /* i.e. do not know */
-		}
-		RETURN (self);
-	    }
-	    error = __mkSmallInteger(__threadErrno);
-	}
+                    {
+                        o_offs = (char *)(__ByteArrayInstPtr(aCollection)->ba_element)-(char *)__InstPtr(aCollection);
+                        __WRITEBYTES_OBJ__(cnt, f,  aCollection, o_offs+offs, len, _buffered, __INST(handleType));
+                    }
+                } else
+                    goto out;
+            }
+            if (cnt == len) {
+                if (__isSmallInteger(__INST(position))) {
+                    INT np = __intVal(__INST(position)) + len;
+                    OBJ t;
+
+                    t = __MKINT(np); __INST(position) = t; __STORE(self, t);
+                } else {
+                    __INST(position) = nil; /* i.e. do not know */
+                }
+                RETURN (self);
+            }
+# ifdef __win32__
+            __threadErrno = __WIN32_ERR(GetLastError());
+# endif
+            error = __mkSmallInteger(__threadErrno);
+        }
     }
 out: ;
 %}.
     error notNil ifTrue:[
-	lastErrorNumber := error.
-	self writeError:error.
-	^ self
+        lastErrorNumber := error.
+        self writeError:error.
+        ^ self
     ].
-    ^ super nextPutAll:aCollection startingAt:start to:stop
+    super nextPutAll:aCollection startingAt:start to:stop
+
+    "Modified: / 22-11-2018 / 12:52:13 / Stefan Vogel"
 !
 
 nextPutAllUnicode:aString
@@ -6654,7 +6812,7 @@
     ].
 
     "
-	'Bönnigheim' asUnicode16String errorPrintCR
+	'Bönnigheim' asUnicode16String errorPrintCR
     "
 !
 
@@ -6667,9 +6825,9 @@
 
      Use with care - non object oriented i/o.
      Warning:
-	in general, you cannot use this method to pass non-byte data to other
-	architectures (unless you prepared the buffer with care),
-	since it does not care for byte order or float representation."
+        in general, you cannot use this method to pass non-byte data to other
+        architectures (unless you prepared the buffer with care),
+        since it does not care for byte order or float representation."
 
     |error|
 
@@ -6679,16 +6837,16 @@
     STObject handle = self.instVarAt(I_handle);
 
     if (anObject.isSTString()) {
-	char[] chars = anObject.asSTString().characters;
-	handle.writeCharacters(chars, start.intValue()-1, count.intValue());
-	self.instVarAt_put(I_position, STObject.Nil);
-	return context._RETURN(count);
+        char[] chars = anObject.asSTString().characters;
+        handle.writeCharacters(chars, start.intValue()-1, count.intValue());
+        self.instVarAt_put(I_position, STObject.Nil);
+        return context._RETURN(count);
     }
     if (anObject.isSymbol()) {
-	java.lang.String chars = anObject.asSTSymbol().characters;
-	handle.writeString(chars, start.intValue()-1, count.intValue());
-	self.instVarAt_put(I_position, STObject.Nil);
-	return context._RETURN(count);
+        java.lang.String chars = anObject.asSTSymbol().characters;
+        handle.writeString(chars, start.intValue()-1, count.intValue());
+        self.instVarAt_put(I_position, STObject.Nil);
+        return context._RETURN(count);
     }
 #else
     int ret;
@@ -6702,126 +6860,131 @@
      || (__INST(handleType) == @symbol(socketFilePointer))
      || (__INST(handleType) == @symbol(socketHandle))
      || (__INST(handleType) == @symbol(pipeFilePointer))) {
-	if (((fp = __INST(handle)) != nil)
-	    && (__INST(mode) != @symbol(readonly))
-	    && __bothSmallInteger(count, start)
-	) {
-	    int _buffered = (__INST(buffered) == true);
-	    FILEPOINTER f = __FILEVal(fp);
-	    int len = __intVal(count);
-	    int offs = __intVal(start) - 1;
-
-	    if (__isExternalBytesLike(anObject)) {
-		OBJ sz;
-
-		nInstBytes = 0;
-		extPtr = (char *)__externalBytesAddress(anObject);
-		if (extPtr == NULL) goto bad;
-		sz = __externalBytesSize(anObject);
-		if (__isSmallInteger(sz)) {
-		    objSize = __intVal(sz);
-		} else {
-		    objSize = 0; /* unknown */
-		}
-	    } else {
-		OBJ oClass = __Class(anObject);
-		int nInstVars = __intVal(__ClassInstPtr(oClass)->c_ninstvars);
-
-		nInstBytes = OHDR_SIZE + __OBJS2BYTES__(nInstVars);
-		switch (__intVal(__ClassInstPtr(oClass)->c_flags) & ARRAYMASK) {
-		    case BYTEARRAY:
-		    case WORDARRAY:
-		    case LONGARRAY:
-		    case SWORDARRAY:
-		    case SLONGARRAY:
-		    case FLOATARRAY:
-			break;
-		    case DOUBLEARRAY:
+        if (((fp = __INST(handle)) != nil)
+            && (__INST(mode) != @symbol(readonly))
+            && __bothSmallInteger(count, start)
+        ) {
+            int _buffered = (__INST(buffered) == true);
+            FILEPOINTER f = __FILEVal(fp);
+            int len = __intVal(count);
+            int offs = __intVal(start) - 1;
+
+            if (__isExternalBytesLike(anObject)) {
+                OBJ sz;
+
+                nInstBytes = 0;
+                extPtr = (char *)__externalBytesAddress(anObject);
+                if (extPtr == NULL) goto bad;
+                sz = __externalBytesSize(anObject);
+                if (__isSmallInteger(sz)) {
+                    objSize = __intVal(sz);
+                } else {
+                    objSize = 0; /* unknown */
+                }
+            } else {
+                OBJ oClass = __Class(anObject);
+                int nInstVars = __intVal(__ClassInstPtr(oClass)->c_ninstvars);
+
+                nInstBytes = OHDR_SIZE + __OBJS2BYTES__(nInstVars);
+                switch (__intVal(__ClassInstPtr(oClass)->c_flags) & ARRAYMASK) {
+                    case BYTEARRAY:
+                    case WORDARRAY:
+                    case LONGARRAY:
+                    case SWORDARRAY:
+                    case SLONGARRAY:
+                    case FLOATARRAY:
+                        break;
+                    case DOUBLEARRAY:
 # ifdef __NEED_DOUBLE_ALIGN
-			nInstBytes = (nInstBytes-1+__DOUBLE_ALIGN) &~ (__DOUBLE_ALIGN-1);
+                        nInstBytes = (nInstBytes-1+__DOUBLE_ALIGN) &~ (__DOUBLE_ALIGN-1);
 # endif
-			break;
-		    case LONGLONGARRAY:
-		    case SLONGLONGARRAY:
+                        break;
+                    case LONGLONGARRAY:
+                    case SLONGLONGARRAY:
 # ifdef __NEED_LONGLONG_ALIGN
-			nInstBytes = (nInstBytes-1+__LONGLONG_ALIGN) &~ (__LONGLONG_ALIGN-1);
+                        nInstBytes = (nInstBytes-1+__LONGLONG_ALIGN) &~ (__LONGLONG_ALIGN-1);
 # endif
-			break;
-		    default:
-			goto bad;
-		}
-		extPtr = (char *)0;
-		objSize = __Size(anObject) - nInstBytes;
-	    }
-	    if ( (offs >= 0) && (len >= 0) && (objSize >= (len + offs)) ) {
-		int cnt;
-
-		if (_buffered) {
-		    __WRITING__(f)
-		}
-
-		if (extPtr) {
+                        break;
+                    default:
+                        goto bad;
+                }
+                extPtr = (char *)0;
+                objSize = __Size(anObject) - nInstBytes;
+            }
+            if ( (offs >= 0) && (len >= 0) && (objSize >= (len + offs)) ) {
+                int cnt;
+
+                if (_buffered) {
+                    __WRITING__(f)
+                }
+
+                if (extPtr) {
 # ifdef __win32__
-		    if ((f == __win32_stdout()) || (f == __win32_stderr())) {
-			cnt = __win32_fwrite(extPtr+offs, 1, len, f);
-		    } else
+                    if ((f == __win32_stdout()) || (f == __win32_stderr())) {
+                        cnt = __win32_fwrite(extPtr+offs, 1, len, f);
+                    } else
 # endif
-		    {
-			__WRITEBYTES__(cnt, f, extPtr+offs, len, _buffered, __INST(handleType));
-		    }
-		} else {
-		    /*
-		     * on interrupt, anObject may be moved to another location.
-		     * So we pass anObject, and the offset to the __WRITEBYTES_OBJ__ macro.
-		     */
-		    offs += nInstBytes;
+                    {
+                        __WRITEBYTES__(cnt, f, extPtr+offs, len, _buffered, __INST(handleType));
+                    }
+                } else {
+                    /*
+                     * on interrupt, anObject may be moved to another location.
+                     * So we pass anObject, and the offset to the __WRITEBYTES_OBJ__ macro.
+                     */
+                    offs += nInstBytes;
 # ifdef __win32__
-		    if ((f == __win32_stdout()) || (f == __win32_stderr())) {
-			cnt = __win32_fwrite((char *)anObject+offs, 1, len, f);
-		    } else
+                    if ((f == __win32_stdout()) || (f == __win32_stderr())) {
+                        cnt = __win32_fwrite((char *)anObject+offs, 1, len, f);
+                    } else
 # endif
-		    {
-			 __WRITEBYTES_OBJ__(cnt, f, anObject, offs, len, _buffered, __INST(handleType));
-		    }
-		}
-
-		if (cnt >= 0) {
-		    if (__isSmallInteger(__INST(position))) {
-			INT np = __intVal(__INST(position)) + cnt;
-			OBJ t;
-
-			t = __MKINT(np); __INST(position) = t; __STORE(self, t);
-		    } else {
-			__INST(position) = nil; /* i.e. do not know */
-		    }
-		    RETURN ( __mkSmallInteger(cnt) );
-		} else /* cnt < 0 */ {
-		    if (
+                    {
+                         __WRITEBYTES_OBJ__(cnt, f, anObject, offs, len, _buffered, __INST(handleType));
+                    }
+                }
+
+                if (cnt >= 0) {
+                    if (__isSmallInteger(__INST(position))) {
+                        INT np = __intVal(__INST(position)) + cnt;
+                        OBJ t;
+
+                        t = __MKINT(np); __INST(position) = t; __STORE(self, t);
+                    } else {
+                        __INST(position) = nil; /* i.e. do not know */
+                    }
+                    RETURN ( __mkSmallInteger(cnt) );
+                } else /* cnt < 0 */ {
+                    if (
 # ifdef EWOULDBLOCK
-			(__threadErrno == EWOULDBLOCK) ||
+                        (__threadErrno == EWOULDBLOCK) ||
 # endif
-			(__threadErrno == EAGAIN)
-		    ) {
-			RETURN ( __mkSmallInteger(0) );
-		    }
-		    __INST(position) = nil; /* i.e. do not know */
-		    error = __mkSmallInteger(__threadErrno);
-		}
-	    }
-	}
+                        (__threadErrno == EAGAIN)
+                    ) {
+                        RETURN ( __mkSmallInteger(0) );
+                    }
+                    __INST(position) = nil; /* i.e. do not know */
+# ifdef __win32__
+                    __threadErrno = __WIN32_ERR(GetLastError());
+# endif
+                    error = __mkSmallInteger(__threadErrno);
+                }
+            }
+        }
     }
 bad: ;
 #endif /* not SCHTEAM */
 %}.
     error notNil ifTrue:[
-	lastErrorNumber := error.
-	self writeError:error.
-	^ 0
+        lastErrorNumber := error.
+        self writeError:error.
+        ^ 0
     ].
     handle isNil ifTrue:[self errorNotOpen. ^ 0].
     (mode == #readonly) ifTrue:[self errorReadOnly. ^ 0].
     self primitiveFailed.
     ^ 0.
+
+    "Modified: / 22-11-2018 / 14:47:58 / Stefan Vogel"
 !
 
 nextPutUnicode:aCharacter