43 lines
		
	
	
	
		
			906 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			43 lines
		
	
	
	
		
			906 B
		
	
	
	
		
			C
		
	
	
	
	
	
#include "f2c.h"
 | 
						|
#include "fio.h"
 | 
						|
int reclen;
 | 
						|
do_us(number,ptr,len) ftnint *number; ftnlen len; char *ptr;
 | 
						|
{
 | 
						|
	if(reading)
 | 
						|
	{
 | 
						|
		recpos += *number * len;
 | 
						|
		if(recpos>reclen)
 | 
						|
		{
 | 
						|
			err(elist->ciend,(-1), "eof/uio");
 | 
						|
		}
 | 
						|
		(void) fread(ptr,(int)len,(int)(*number),cf);
 | 
						|
		return(0);
 | 
						|
	}
 | 
						|
	else
 | 
						|
	{
 | 
						|
		reclen += *number * len;
 | 
						|
		(void) fwrite(ptr,(int)len,(int)(*number),cf);
 | 
						|
		return(0);
 | 
						|
	}
 | 
						|
}
 | 
						|
integer do_uio(number,ptr,len) ftnint *number; ftnlen len; char *ptr;
 | 
						|
{
 | 
						|
	if(sequential)
 | 
						|
		return(do_us(number,ptr,len));
 | 
						|
	else	return(do_ud(number,ptr,len));
 | 
						|
}
 | 
						|
do_ud(number,ptr,len) ftnint *number; ftnlen len; char *ptr;
 | 
						|
{
 | 
						|
	recpos += *number * len;
 | 
						|
	if(recpos > curunit->url && curunit->url!=1)
 | 
						|
		err(elist->cierr,110,"eof/uio");
 | 
						|
	if(reading)
 | 
						|
	{
 | 
						|
		if(fread(ptr,(int)len,(int)(*number),cf)
 | 
						|
			!= *number)
 | 
						|
			err(elist->cierr,27,"eof/uio")
 | 
						|
		else return(0);
 | 
						|
	}
 | 
						|
	(void) fwrite(ptr,(int)len,(int)(*number),cf);
 | 
						|
	return(0);
 | 
						|
}
 |