FileStream.st
changeset 475 b57530aa1b0a
parent 437 a005e97d261e
child 477 8710aba7876b
equal deleted inserted replaced
474:a5ce0ee55d33 475:b57530aa1b0a
    19 
    19 
    20 FileStream comment:'
    20 FileStream comment:'
    21 COPYRIGHT (c) 1989 by Claus Gittinger
    21 COPYRIGHT (c) 1989 by Claus Gittinger
    22 	      All Rights Reserved
    22 	      All Rights Reserved
    23 
    23 
    24 $Header: /cvs/stx/stx/libbasic/FileStream.st,v 1.24 1995-09-16 17:13:21 claus Exp $
    24 $Header: /cvs/stx/stx/libbasic/FileStream.st,v 1.25 1995-11-02 20:10:52 cg Exp $
    25 '!
    25 '!
    26 
    26 
    27 !FileStream class methodsFor:'documentation'!
    27 !FileStream class methodsFor:'documentation'!
    28 
    28 
    29 copyright
    29 copyright
    40 "
    40 "
    41 !
    41 !
    42 
    42 
    43 version
    43 version
    44 "
    44 "
    45 $Header: /cvs/stx/stx/libbasic/FileStream.st,v 1.24 1995-09-16 17:13:21 claus Exp $
    45 $Header: /cvs/stx/stx/libbasic/FileStream.st,v 1.25 1995-11-02 20:10:52 cg Exp $
    46 "
    46 "
    47 !
    47 !
    48 
    48 
    49 documentation
    49 documentation
    50 "
    50 "
   398 	} while ((f == NULL) && (errno == EINTR));
   398 	} while ((f == NULL) && (errno == EINTR));
   399 	if (f == NULL) {
   399 	if (f == NULL) {
   400 	    _INST(lastErrorNumber) = _MKSMALLINT(errno);
   400 	    _INST(lastErrorNumber) = _MKSMALLINT(errno);
   401 	    _INST(position) = nil;
   401 	    _INST(position) = nil;
   402 	} else {
   402 	} else {
   403 	    _INST(filePointer) = MKOBJ((int)f);
   403 	    _INST(filePointer) = __MKOBJ((int)f);
   404 	    _INST(position) = _MKSMALLINT(1);
   404 	    _INST(position) = _MKSMALLINT(1);
   405 	    retVal = self;
   405 	    retVal = self;
   406 	}
   406 	}
   407     }
   407     }
   408 %}.
   408 %}.
   507 #ifdef transputer
   507 #ifdef transputer
   508     FILE *f;
   508     FILE *f;
   509     int size;
   509     int size;
   510 
   510 
   511     if (_INST(filePointer) != nil) {
   511     if (_INST(filePointer) != nil) {
   512 	f = (FILE *)MKFD(_INST(filePointer));
   512 	f = __FILEVal(_INST(filePointer));
   513 	if ((size = filesize(fileno(f))) >= 0) {
   513 	if ((size = filesize(fileno(f))) >= 0) {
   514 	    RETURN ( _MKSMALLINT(size) );
   514 	    RETURN ( _MKSMALLINT(size) );
   515 	}
   515 	}
   516     }
   516     }
   517 #else
   517 #else
   519     struct stat buf;
   519     struct stat buf;
   520     int ret;
   520     int ret;
   521     int fd;
   521     int fd;
   522 
   522 
   523     if (_INST(filePointer) != nil) {
   523     if (_INST(filePointer) != nil) {
   524 	f = (FILE *)MKFD(_INST(filePointer));
   524 	f = __FILEVal(_INST(filePointer));
   525 	fd = fileno(f);
   525 	fd = fileno(f);
   526 	do {
   526 	do {
   527 	    ret = fstat(fd, &buf);
   527 	    ret = fstat(fd, &buf);
   528 	} while ((ret < 0) && (errno == EINTR));
   528 	} while ((ret < 0) && (errno == EINTR));
   529 	if (ret >= 0) {
   529 	if (ret >= 0) {
   555 
   555 
   556     FILE *f;
   556     FILE *f;
   557     long currentPosition;
   557     long currentPosition;
   558 
   558 
   559     if (_INST(filePointer) != nil) {
   559     if (_INST(filePointer) != nil) {
   560 	f = (FILE *)MKFD(_INST(filePointer));
   560 	f = __FILEVal(_INST(filePointer));
   561 	do {
   561 	do {
   562 	    if (_INST(buffered) == true) {
   562 	    if (_INST(buffered) == true) {
   563 		currentPosition = (long) ftell(f);
   563 		currentPosition = (long) ftell(f);
   564 	    } else {
   564 	    } else {
   565 		currentPosition = (long) lseek(fileno(f), 0L, SEEK_CUR);
   565 		currentPosition = (long) lseek(fileno(f), 0L, SEEK_CUR);
   588     int ret;
   588     int ret;
   589     OBJ fp;
   589     OBJ fp;
   590 
   590 
   591     if ((fp = _INST(filePointer)) != nil) {
   591     if ((fp = _INST(filePointer)) != nil) {
   592 	if (__isSmallInteger(newPos)) {
   592 	if (__isSmallInteger(newPos)) {
   593 	    f = (FILE *)MKFD(fp);
   593 	    f = __FILEVal(fp);
   594 	    /*
   594 	    /*
   595 	     * notice: Smalltalk index starts at 1
   595 	     * notice: Smalltalk index starts at 1
   596 	     */
   596 	     */
   597 	    do {
   597 	    do {
   598 		if (_INST(buffered) == true) {
   598 		if (_INST(buffered) == true) {
   624 %{
   624 %{
   625     FILE *f;
   625     FILE *f;
   626     int ret;
   626     int ret;
   627 
   627 
   628     if (_INST(filePointer) != nil) {
   628     if (_INST(filePointer) != nil) {
   629 	f = (FILE *)MKFD(_INST(filePointer));
   629 	f = __FILEVal(_INST(filePointer));
   630 	_INST(position) = nil;
   630 	_INST(position) = nil;
   631 	do {
   631 	do {
   632 	    if (_INST(buffered) == true) {
   632 	    if (_INST(buffered) == true) {
   633 		ret = fseek(f, 0L, SEEK_END);
   633 		ret = fseek(f, 0L, SEEK_END);
   634 	    } else {
   634 	    } else {