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);
 | |
| }
 |