PipeStream.st
changeset 369 730e0f5d2404
parent 362 4131e87e79ec
child 379 5b5a130ccd09
--- a/PipeStream.st	Thu Jul 27 06:12:43 1995 +0200
+++ b/PipeStream.st	Fri Jul 28 04:38:43 1995 +0200
@@ -21,7 +21,7 @@
 COPYRIGHT (c) 1989 by Claus Gittinger
 	      All Rights Reserved
 
-$Header: /cvs/stx/stx/libbasic/PipeStream.st,v 1.26 1995-07-22 19:23:52 claus Exp $
+$Header: /cvs/stx/stx/libbasic/PipeStream.st,v 1.27 1995-07-28 02:37:38 claus Exp $
 '!
 
 !PipeStream class methodsFor:'documentation'!
@@ -42,7 +42,7 @@
 
 version
 "
-$Header: /cvs/stx/stx/libbasic/PipeStream.st,v 1.26 1995-07-22 19:23:52 claus Exp $
+$Header: /cvs/stx/stx/libbasic/PipeStream.st,v 1.27 1995-07-28 02:37:38 claus Exp $
 "
 !
 
@@ -245,7 +245,10 @@
 shutDown
     "close the Stream, ignoring any broken-pipe errors"
 
-    BrokenPipeSignal catch:[self closeFileDescriptor]
+    BrokenPipeSignal catch:[
+	Lobby unregister:self.
+	self closeFileDescriptor
+    ]
 !
 
 closeFile
@@ -268,6 +271,27 @@
     }
 #endif
 %}
+!
+
+closeFileDescriptor
+    "alternative very low level close 
+     This closes the underlying OS-fileDescriptor 
+     - and will NOT write any buffered data to the stream.
+     You have been warned."
+
+%{  /* NOCONTEXT */
+
+    OBJ fp;
+    FILE *f;
+
+    if ((fp = _INST(filePointer)) != nil) {
+	_INST(filePointer) = nil;
+	__BEGIN_INTERRUPTABLE__
+	f = MKFD(fp);
+	close(fileno(f));
+	__END_INTERRUPTABLE__
+    }
+%}
 ! !
 
 !PipeStream methodsFor:'private'!