--- a/ExtStream.st Fri Nov 10 16:44:24 1995 +0100
+++ b/ExtStream.st Fri Nov 10 17:46:49 1995 +0100
@@ -24,7 +24,7 @@
COPYRIGHT (c) 1988 by Claus Gittinger
All Rights Reserved
-$Header: /cvs/stx/stx/libbasic/Attic/ExtStream.st,v 1.62 1995-11-04 14:40:24 cg Exp $
+$Header: /cvs/stx/stx/libbasic/Attic/ExtStream.st,v 1.63 1995-11-10 16:46:21 cg Exp $
'!
!ExternalStream primitiveDefinitions!
@@ -151,7 +151,7 @@
version
"
-$Header: /cvs/stx/stx/libbasic/Attic/ExtStream.st,v 1.62 1995-11-04 14:40:24 cg Exp $
+$Header: /cvs/stx/stx/libbasic/Attic/ExtStream.st,v 1.63 1995-11-10 16:46:21 cg Exp $
"
!
@@ -2188,10 +2188,11 @@
FILE *f;
int len;
char buffer[1024];
- char *rslt, *limit;
+ char *rslt, *nextPtr, *limit;
int fd, ch;
int _buffered;
OBJ fp;
+ OBJ __MKSTRING_L();
_INST(lastErrorNumber) = nil;
if (((fp = _INST(filePointer)) != nil)
@@ -2220,7 +2221,7 @@
} while ((rslt == NULL) && (errno == EINTR));
#else
- rslt = buffer;
+ rslt = nextPtr = buffer;
limit = buffer + sizeof(buffer) - 2;
for (;;) {
@@ -2256,29 +2257,29 @@
len = 0;
} else {
len = 1;
- *rslt = ch;
+ *nextPtr = ch;
}
} else {
do {
errno = 0;
- len = read(fd, rslt, 1);
+ len = read(fd, nextPtr, 1);
} while ((len < 0) && (errno == EINTR));
}
if (len <= 0) {
- if (rslt == buffer) {
+ if (nextPtr == buffer) {
rslt = NULL;
} else {
- *rslt = '\0';
+ *nextPtr = '\0';
}
break;
}
- rslt++;
- if (*(rslt-1) == '\n') {
- *rslt = '\0';
+ if (*nextPtr == '\n') {
+ *nextPtr = '\0';
break;
}
- if (rslt >= limit) {
- *rslt = '\0';
+ nextPtr++;
+ if (nextPtr >= limit) {
+ *nextPtr = '\0';
break;
}
}
@@ -2286,20 +2287,24 @@
__END_INTERRUPTABLE__
if (rslt != NULL) {
/*
- * that strlen can be avoided and replaced by (rslt - buffer)
+ * that strlen can be avoided and replaced by (nextPtr - buffer)
*/
- len = strlen(buffer);
+ /* len = strlen(buffer); */
+ len = nextPtr-buffer;
+
if (_INST(position) != nil) {
- _INST(position) = __MKSMALLINT(__intVal(_INST(position)) + len + 1);
+ _INST(position) = __MKSMALLINT(__intVal(_INST(position)) + len);
}
/* remove EOL character */
- if ((len != 0) && (buffer[len-1] == '\n')) {
- buffer[--len] = '\0';
+ if (len != 0) {
+ if (buffer[len-1] == '\n') {
+ buffer[--len] = '\0';
+ }
+ if ((len != 0) && (buffer[len-1] == '\r')) {
+ buffer[--len] = '\0';
+ }
}
- if ((len != 0) && (buffer[len-1] == '\r')) {
- buffer[--len] = '\0';
- }
- RETURN ( _MKSTRING(buffer COMMA_CON) );
+ RETURN ( __MKSTRING_L(buffer, len COMMA_CON) );
}
if (ferror(f) && (errno != 0)) {
_INST(lastErrorNumber) = __MKSMALLINT(errno);
@@ -3252,6 +3257,7 @@
int ch;
int cnt = 0;
OBJ fp;
+ OBJ __MKSTRING_L();
if (((fp = _INST(filePointer)) != nil)
&& (_INST(mode) != @symbol(writeonly))) {
@@ -3321,9 +3327,9 @@
if (_INST(position) != nil) {
_INST(position) = __MKSMALLINT(__intVal(_INST(position)) + cnt);
}
- buffer[len] = '\0';
if (len != 0) {
- RETURN ( _MKSTRING(buffer COMMA_CON) );
+ buffer[len] = '\0';
+ RETURN ( __MKSTRING_L(buffer, len COMMA_CON) );
}
RETURN ( nil );
}
@@ -3361,6 +3367,7 @@
REGISTER int index;
int currSize;
int inComment, inString, inPrimitive = 0;
+ OBJ __MKSTRING_L();
if (!fastFlag && buffer) {
/*
@@ -3498,7 +3505,7 @@
/*
* make it a string
*/
- retVal = _MKSTRING(buffer COMMA_CON);
+ retVal = __MKSTRING_L(buffer, index COMMA_CON);
err:
if (!fastFlag && buffer) {
free(buffer);