--- a/ExternalStream.st Tue Jul 13 18:12:05 1999 +0200
+++ b/ExternalStream.st Wed Jul 14 21:26:54 1999 +0200
@@ -2581,25 +2581,28 @@
__INST(lastErrorNumber) = nil;
if (((fp = __INST(filePointer)) != nil)
&& (__INST(mode) != @symbol(writeonly))) {
- f = __FILEVal(fp);
-
- _buffered = (__INST(buffered) == true);
- if (_buffered) {
- __READING__(f)
- }
- __READBYTE__(ret, f, &byte, _buffered);
- if (ret > 0) {
- if (__INST(position) != nil)
- __INST(position) = __MKSMALLINT(__intVal(__INST(position)) + 1);
- RETURN (__MKSMALLINT(byte));
- }
-
- if (ret == 0) {
- __INST(hitEOF) = true;
- } else /* ret < 0 */ {
- __INST(position) = nil;
- __INST(lastErrorNumber) = __MKSMALLINT(errno);
- }
+ f = __FILEVal(fp);
+
+ _buffered = (__INST(buffered) == true);
+ if (_buffered) {
+ __READING__(f)
+ }
+ __READBYTE__(ret, f, &byte, _buffered);
+ if (ret > 0) {
+ OBJ pos;
+
+ if ((pos = __INST(position)) != nil) {
+ __INST(position) = __MKSMALLINT(__intVal(pos) + 1);
+ }
+ RETURN (__MKSMALLINT(byte));
+ }
+
+ if (ret == 0) {
+ __INST(hitEOF) = true;
+ } else /* ret < 0 */ {
+ __INST(position) = nil;
+ __INST(lastErrorNumber) = __MKSMALLINT(errno);
+ }
}
%}.
hitEOF ifTrue:[^ self pastEnd].
@@ -2745,43 +2748,64 @@
__INST(lastErrorNumber) = nil;
if (((fp = __INST(filePointer)) != nil)
- && (__INST(mode) != @symbol(writeonly))
+ && (__INST(mode) != @symbol(writeonly))
) {
- FILEPOINTER f;
- int ret;
- int value;
- char buffer[4];
-
- f = __FILEVal(fp);
- __READBYTES__(ret, f, buffer, 4, __INST(buffered) == true);
-
- if (ret == 4) {
- if (__INST(position) != nil) {
- __INST(position) = __MKSMALLINT(__intVal(__INST(position)) + 4);
- }
- if (msbFlag == true) {
- value = (buffer[0] & 0xFF);
- value = (value << 8) | (buffer[1] & 0xFF);
- value = (value << 8) | (buffer[2] & 0xFF);
- value = (value << 8) | (buffer[3] & 0xFF);
- } else {
- value = (buffer[3] & 0xFF);
- value = (value << 8) | (buffer[2] & 0xFF);
- value = (value << 8) | (buffer[1] & 0xFF);
- value = (value << 8) | (buffer[0] & 0xFF);
- }
- if ((value >= _MIN_INT) && (value <= _MAX_INT)) {
- RETURN ( __MKSMALLINT(value));
- }
- RETURN ( __MKLARGEINT(value) );
- }
-
- if (ret < 0) {
- __INST(position) = nil;
- __INST(lastErrorNumber) = __MKSMALLINT(errno);
- } else /* ret == 0 */ {
- __INST(hitEOF) = true;
- }
+ FILEPOINTER f;
+ int ret, _buffered;
+ int value;
+ union {
+ unsigned char buffer[4];
+ int intVal;
+ } u;
+
+ f = __FILEVal(fp);
+ _buffered = (__INST(buffered) == true);
+ if (_buffered) {
+ __READING__(f)
+ }
+ __READBYTES__(ret, f, u.buffer, 4, _buffered);
+
+ if (ret == 4) {
+ OBJ pos;
+
+ if ((pos = __INST(position)) != nil) {
+ __INST(position) = __MKSMALLINT(__intVal(pos) + 4);
+ }
+ if (msbFlag == true) {
+#if defined(__MSBFIRST)
+ value = u.intVal;
+#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);
+#endif
+ } else {
+#if defined(__LSBFIRST)
+ 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);
+#endif
+ }
+#ifdef alpha64
+ RETURN ( __MKSMALLINT(value));
+#else
+ if ((value >= _MIN_INT) && (value <= _MAX_INT)) {
+ RETURN ( __MKSMALLINT(value));
+ }
+ RETURN ( __MKLARGEINT(value) );
+#endif
+ }
+
+ if (ret < 0) {
+ __INST(position) = nil;
+ __INST(lastErrorNumber) = __MKSMALLINT(errno);
+ } else /* ret == 0 */ {
+ __INST(hitEOF) = true;
+ }
}
%}.
hitEOF ifTrue:[^ self pastEnd].
@@ -2803,34 +2827,51 @@
__INST(lastErrorNumber) = nil;
if (((fp = __INST(filePointer)) != nil)
- && (__INST(mode) != @symbol(writeonly))
+ && (__INST(mode) != @symbol(writeonly))
) {
- FILEPOINTER f;
- int ret;
- short value;
- char buffer[2];
-
- f = __FILEVal(fp);
- __READBYTES__(ret, f, buffer, 2, __INST(buffered) == true);
-
- if (ret == 2) {
- if (__INST(position) != nil) {
- __INST(position) = __MKSMALLINT(__intVal(__INST(position)) + 2);
- }
- if (msbFlag == true) {
- value = ((buffer[0] & 0xFF) << 8) | (buffer[1] & 0xFF);
- } else {
- value = ((buffer[1] & 0xFF) << 8) | (buffer[0] & 0xFF);
- }
- RETURN (__MKSMALLINT(value));
- }
-
- if (ret < 0) {
- __INST(position) = nil;
- __INST(lastErrorNumber) = __MKSMALLINT(errno);
- } else /* ret == 0 */ {
- __INST(hitEOF) = true;
- }
+ FILEPOINTER f;
+ int ret, _buffered;
+ short value;
+ union {
+ unsigned char buffer[2];
+ short shortVal;
+ } u;
+
+ f = __FILEVal(fp);
+ _buffered = (__INST(buffered) == true);
+ if (_buffered) {
+ __READING__(f)
+ }
+ __READBYTES__(ret, f, u.buffer, 2, _buffered);
+
+ if (ret == 2) {
+ OBJ pos;
+
+ if ((pos = __INST(position)) != nil) {
+ __INST(position) = __MKSMALLINT(__intVal(pos) + 2);
+ }
+ if (msbFlag == true) {
+#if defined(__MSBFIRST)
+ value = u.shortVal;
+#else
+ value = ((u.buffer[0] & 0xFF) << 8) | (u.buffer[1] & 0xFF);
+#endif
+ } else {
+#if defined(__LSBFIRST)
+ value = u.shortVal;
+#else
+ value = ((u.buffer[1] & 0xFF) << 8) | (u.buffer[0] & 0xFF);
+#endif
+ }
+ RETURN (__MKSMALLINT(value));
+ }
+
+ if (ret < 0) {
+ __INST(position) = nil;
+ __INST(lastErrorNumber) = __MKSMALLINT(errno);
+ } else /* ret == 0 */ {
+ __INST(hitEOF) = true;
+ }
}
%}.
hitEOF ifTrue:[^ self pastEnd].
@@ -2852,46 +2893,65 @@
__INST(lastErrorNumber) = nil;
if (((fp = __INST(filePointer)) != nil)
- && (__INST(mode) != @symbol(writeonly))
+ && (__INST(mode) != @symbol(writeonly))
) {
- FILEPOINTER f;
- int ret;
- unsigned INT value;
- unsigned char buffer[4];
-
- f = __FILEVal(fp);
- __READBYTES__(ret, f, buffer, 4, __INST(buffered) == true);
-
- if (ret == 4) {
- if (__INST(position) != nil) {
- __INST(position) = __MKSMALLINT(__intVal(__INST(position)) + 4);
- }
- if (msbFlag == true) {
- value = (buffer[0] & 0xFF);
- value = (value << 8) | (buffer[1] & 0xFF);
- value = (value << 8) | (buffer[2] & 0xFF);
- value = (value << 8) | (buffer[3] & 0xFF);
- } else {
- value = (buffer[3] & 0xFF);
- value = (value << 8) | (buffer[2] & 0xFF);
- value = (value << 8) | (buffer[1] & 0xFF);
- value = (value << 8) | (buffer[0] & 0xFF);
- }
+ FILEPOINTER f;
+ int ret, _buffered;
+ unsigned INT value;
+ union {
+ unsigned char buffer[4];
+ unsigned int intVal;
+ } u;
+
+ f = __FILEVal(fp);
+ _buffered = (__INST(buffered) == true);
+ if (_buffered) {
+ __READING__(f)
+ }
+ __READBYTES__(ret, f, u.buffer, 4, _buffered);
+
+ if (ret == 4) {
+ OBJ pos;
+
+ if ((pos = __INST(position)) != nil) {
+ __INST(position) = __MKSMALLINT(__intVal(pos) + 4);
+ }
+ if (msbFlag == true) {
+#if defined(__MSBFIRST)
+ value = u.intVal;
+#else
+ value = u.buffer[0];
+ value = (value << 8) | u.buffer[1];
+ value = (value << 8) | u.buffer[2];
+ value = (value << 8) | u.buffer[3];
+#endif
+ } else {
+#if defined(__LSBFIRST)
+ 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];
+#endif
+ }
#ifdef alpha64
- value &= 0xFFFFFFFF;
+ value &= 0xFFFFFFFF;
+ RETURN (__MKSMALLINT(value));
+#else
+ if (value <= _MAX_INT) {
+ RETURN (__MKSMALLINT(value));
+ }
+ RETURN (__MKULARGEINT(value) );
#endif
- if (value <= _MAX_INT) {
- RETURN ( __MKSMALLINT(value));
- }
- RETURN ( __MKULARGEINT(value) );
- }
-
- if (ret < 0) {
- __INST(position) = nil;
- __INST(lastErrorNumber) = __MKSMALLINT(errno);
- } else /* ret == 0 */ {
- __INST(hitEOF) = true;
- }
+ }
+
+ if (ret < 0) {
+ __INST(position) = nil;
+ __INST(lastErrorNumber) = __MKSMALLINT(errno);
+ } else /* ret == 0 */ {
+ __INST(hitEOF) = true;
+ }
}
%}.
hitEOF ifTrue:[^ self pastEnd].
@@ -2912,34 +2972,51 @@
__INST(lastErrorNumber) = nil;
if (((fp = __INST(filePointer)) != nil)
- && (__INST(mode) != @symbol(writeonly))
+ && (__INST(mode) != @symbol(writeonly))
) {
- FILEPOINTER f;
- int ret;
- unsigned int value;
- char buffer[2];
-
- f = __FILEVal(fp);
- __READBYTES__(ret, f, buffer, 2, __INST(buffered) == true);
-
- if (ret == 2) {
- if (__INST(position) != nil) {
- __INST(position) = __MKSMALLINT(__intVal(__INST(position)) + 2);
- }
- if (msbFlag == true) {
- value = ((buffer[0] & 0xFF) << 8) | (buffer[1] & 0xFF);
- } else {
- value = ((buffer[1] & 0xFF) << 8) | (buffer[0] & 0xFF);
- }
- RETURN (__MKSMALLINT(value));
- }
-
- if (ret < 0) {
- __INST(position) = nil;
- __INST(lastErrorNumber) = __MKSMALLINT(errno);
- } else /* ret == 0 */ {
- __INST(hitEOF) = true;
- }
+ FILEPOINTER f;
+ int ret, _buffered;
+ unsigned int value;
+ union {
+ unsigned char buffer[2];
+ unsigned short shortVal;
+ } u;
+
+ f = __FILEVal(fp);
+ _buffered = (__INST(buffered) == true);
+ if (_buffered) {
+ __READING__(f)
+ }
+ __READBYTES__(ret, f, u.buffer, 2, _buffered);
+
+ if (ret == 2) {
+ OBJ pos;
+
+ if ((pos = __INST(position)) != nil) {
+ __INST(position) = __MKSMALLINT(__intVal(pos) + 2);
+ }
+ if (msbFlag == true) {
+#if defined(__MSBFIRST)
+ value = u.shortVal;
+#else
+ value = (u.buffer[0] << 8) | u.buffer[1];
+#endif
+ } else {
+#if defined(__LSBFIRST)
+ value = u.shortVal;
+#else
+ value = (u.buffer[1] << 8) | u.buffer[0];
+#endif
+ }
+ RETURN (__MKSMALLINT(value));
+ }
+
+ if (ret < 0) {
+ __INST(position) = nil;
+ __INST(lastErrorNumber) = __MKSMALLINT(errno);
+ } else /* ret == 0 */ {
+ __INST(hitEOF) = true;
+ }
}
%}.
hitEOF ifTrue:[^ self pastEnd].
@@ -4745,6 +4822,6 @@
!ExternalStream class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/ExternalStream.st,v 1.191 1999-07-10 18:37:44 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/ExternalStream.st,v 1.192 1999-07-14 19:26:54 cg Exp $'
! !
ExternalStream initialize!