--- a/ExternalStream.st Sat Feb 11 17:42:24 1995 +0100
+++ b/ExternalStream.st Wed Feb 15 11:22:05 1995 +0100
@@ -24,7 +24,7 @@
COPYRIGHT (c) 1988 by Claus Gittinger
All Rights Reserved
-$Header: /cvs/stx/stx/libbasic/ExternalStream.st,v 1.26 1995-02-11 14:08:30 claus Exp $
+$Header: /cvs/stx/stx/libbasic/ExternalStream.st,v 1.27 1995-02-15 10:21:55 claus Exp $
'!
!ExternalStream primitiveDefinitions!
@@ -87,7 +87,7 @@
version
"
-$Header: /cvs/stx/stx/libbasic/ExternalStream.st,v 1.26 1995-02-11 14:08:30 claus Exp $
+$Header: /cvs/stx/stx/libbasic/ExternalStream.st,v 1.27 1995-02-15 10:21:55 claus Exp $
"
!
@@ -727,7 +727,7 @@
_INST(lastErrorNumber) = nil;
if ((fp = _INST(filePointer)) != nil) {
- if (_isSmallInteger(ioctlNumber)) {
+ if (__isSmallInteger(ioctlNumber)) {
ioNum = _intVal(ioctlNumber);
f = MKFD(fp);
@@ -768,14 +768,14 @@
_INST(lastErrorNumber) = nil;
if ((fp = _INST(filePointer)) != nil) {
- if (_isSmallInteger(ioctlNumber)
- && (_isSmallInteger(arg) || __isBytes(arg))) {
+ if (__isSmallInteger(ioctlNumber)
+ && (__isSmallInteger(arg) || __isBytes(arg))) {
f = MKFD(fp);
ioNum = _intVal(ioctlNumber);
__immediateInterrupt__ = 1;
do {
- if (_isSmallInteger(arg)) {
+ if (__isSmallInteger(arg)) {
ret = ioctl(fileno(f), ioNum, _intVal(arg));
} else {
ret = ioctl(fileno(f), ioNum, _ByteArrayInstPtr(arg)->ba_element);
@@ -913,7 +913,7 @@
_INST(lastErrorNumber) = nil;
if (((fp = _INST(filePointer)) != nil)
&& (_INST(mode) != @symbol(writeonly))) {
- if (_isSmallInteger(count) && _isSmallInteger(start)) {
+ if (__bothSmallInteger(count, start)) {
f = MKFD(fp);
oClass = _Class(anObject);
@@ -1276,7 +1276,7 @@
_INST(lastErrorNumber) = nil;
if (((fp = _INST(filePointer)) != nil)
&& (_INST(mode) != @symbol(readonly))) {
- if (_isSmallInteger(aByteValue)) {
+ if (__isSmallInteger(aByteValue)) {
c = _intVal(aByteValue);
f = MKFD(fp);
__immediateInterrupt__ = 1;
@@ -1357,7 +1357,7 @@
_INST(lastErrorNumber) = nil;
if (((fp = _INST(filePointer)) != nil)
&& (_INST(mode) != @symbol(readonly))) {
- if (_isSmallInteger(count) && _isSmallInteger(start)) {
+ if (__bothSmallInteger(count, start)) {
oClass = _Class(anObject);
switch (_intVal(_ClassInstPtr(oClass)->c_flags) & ARRAYMASK) {
case BYTEARRAY:
@@ -1429,7 +1429,7 @@
_INST(lastErrorNumber) = nil;
if (((fp = _INST(filePointer)) != nil)
&& (_INST(mode) != @symbol(readonly))
- && _isSmallInteger(aNumber)) {
+ && __isSmallInteger(aNumber)) {
num = _intVal(aNumber);
if (msbFlag == true) {
bytes[0] = (num >> 8) & 0xFF;
@@ -1488,7 +1488,7 @@
_INST(lastErrorNumber) = nil;
if (((fp = _INST(filePointer)) != nil)
&& (_INST(mode) != @symbol(readonly))
- && _isSmallInteger(aNumber)) {
+ && __isSmallInteger(aNumber)) {
num = _intVal(aNumber);
if (msbFlag == true) {
bytes[0] = (num >> 24) & 0xFF;
@@ -1634,7 +1634,7 @@
if (c != EOF) {
pos = _INST(position);
- if (_isSmallInteger(pos)) {
+ if (__isSmallInteger(pos)) {
_INST(position) = _MKSMALLINT(_intVal(pos) + 1);
} else {
_INST(position) = nil;
@@ -1736,7 +1736,7 @@
_INST(lastErrorNumber) = _MKSMALLINT(errno);
}
} else {
- if (_isSmallInteger(aCharacter)) {
+ if (__isSmallInteger(aCharacter)) {
c = _intVal(aCharacter);
goto doWrite;
}
@@ -1846,7 +1846,7 @@
_INST(lastErrorNumber) = nil;
if (((fp = _INST(filePointer)) != nil)
&& (_INST(mode) != @symbol(readonly))) {
- if (_isSmallInteger(start) && _isSmallInteger(stop)) {
+ if (__bothSmallInteger(start, stop)) {
cp = NULL;
if (_INST(binary) != true) {
if (__isString(aCollection) || __isSymbol(aCollection)) {
@@ -1988,6 +1988,11 @@
buffer[0] = 0;
_buffered = (_INST(buffered) == true);
+ if (_buffered) {
+ __READING__(f);
+ } else {
+ fd = fileno(f);
+ }
/*
* mhmh - the following code looks ok to me,
@@ -2000,16 +2005,17 @@
rslt = fgets(buffer, sizeof(buffer), f);
} while ((rslt == NULL) && (errno == EINTR));
#else
- if (_buffered) {
- __READING__(f)
- }
+
rslt = buffer;
- fd = fileno(f);
for (;;) {
if (_buffered) {
+/*
do {
+*/
ch = getc(f);
+/*
} while ((ch < 0) && (errno == EINTR));
+*/
if (ch == EOF) {
if (ferror(f)) {
if (errno == EINTR) {
@@ -2164,7 +2170,7 @@
char buffer[1024];
_INST(lastErrorNumber) = nil;
- if (_isSmallInteger(srcFilePointer)) {
+ if (__isSmallInteger(srcFilePointer)) {
if ((aStringOrNil == nil) || __isString(aStringOrNil)) {
if (aStringOrNil != nil) {
matchString = (char *) _stringVal(aStringOrNil);
@@ -2342,6 +2348,7 @@
c = getc(f);
} while ((c < 0) && (errno == EINTR));
__immediateInterrupt__ = 0;
+
if (c != EOF) {
ungetc(c, f);
RETURN (false);
@@ -2513,7 +2520,7 @@
if (((fp = _INST(filePointer)) != nil)
&& (_INST(mode) != @symbol(writeonly))) {
if (_INST(binary) == true) {
- if (_isSmallInteger(anObject)) {
+ if (__isSmallInteger(anObject)) {
peekValue = _intVal(anObject) & 0xFF;
} else {
goto bad;
@@ -2526,9 +2533,9 @@
}
}
+ f = MKFD(fp);
__READING__(f)
- f = MKFD(fp);
__immediateInterrupt__ = 1;
do {
c = getc(f);
@@ -2578,7 +2585,7 @@
_INST(lastErrorNumber) = nil;
if (((fp = _INST(filePointer)) != nil)
&& (_INST(mode) != @symbol(writeonly))) {
- if ((_INST(binary) == true) && _isSmallInteger(anObject)) {
+ if ((_INST(binary) == true) && __isSmallInteger(anObject)) {
peekValue = _intVal(anObject) & 0xFF;
} else {
if ((_INST(binary) != true) && __isCharacter(anObject)) {
@@ -2589,9 +2596,8 @@
}
if (peekValue >= 0) {
+ _INST(position) = nil;
f = MKFD(fp);
- _INST(position) = nil;
-
__immediateInterrupt__ = 1;
__READING__(f)
@@ -2614,7 +2620,6 @@
RETURN (anObject);
}
}
- __immediateInterrupt__ = 0;
}
}
%}.
@@ -2648,6 +2653,7 @@
RETURN ( self );
}
__immediateInterrupt__ = 0;
+
if (ferror(f) && (errno != 0)) {
_INST(lastErrorNumber) = _MKSMALLINT(errno);
} else {
@@ -2748,7 +2754,7 @@
&& (_INST(mode) != @symbol(writeonly))) {
if (_INST(binary) == true) {
/* searched for object must be a smallInteger */
- if (! _isSmallInteger(aCharacter)) goto badArgument;
+ if (! __isSmallInteger(aCharacter)) goto badArgument;
cSearch = _intVal(aCharacter);
} else {
/* searched for object must be a character */
@@ -2759,7 +2765,6 @@
if ((cSearch < 0) || (cSearch > 255)) goto badArgument;
f = MKFD(fp);
-
__READING__(f)
__immediateInterrupt__ = 1;
@@ -2889,7 +2894,6 @@
&& (_INST(mode) != @symbol(writeonly))) {
if (_INST(binary) != true) {
f = MKFD(fp);
-
__READING__(f)
__immediateInterrupt__ = 1;
@@ -2949,9 +2953,7 @@
if (((fp = _INST(filePointer)) != nil)
&& (_INST(mode) != @symbol(writeonly))) {
f = MKFD(fp);
-
__immediateInterrupt__ = 1;
-
__READING__(f)
for (;;) {
@@ -2961,6 +2963,7 @@
if (ch < 0) {
if (ferror(f) && (errno != 0)) {
_INST(lastErrorNumber) = _MKSMALLINT(errno);
+ __immediateInterrupt__ = 0;
goto err;
}
_INST(hitEOF) = true;
@@ -2983,6 +2986,7 @@
if (ch < 0) {
if (ferror(f) && (errno != 0)) {
_INST(lastErrorNumber) = _MKSMALLINT(errno);
+ __immediateInterrupt__ = 0;
goto err;
}
_INST(hitEOF) = true;
@@ -3126,6 +3130,7 @@
* mhmh - chunk seems to be very big ....
*/
outOfMemory = true;
+ __immediateInterrupt__ = 0;
goto err;
}
bcopy(buffer, newBuffer, index);