59 lines
		
	
	
	
		
			903 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			59 lines
		
	
	
	
		
			903 B
		
	
	
	
		
			C
		
	
	
	
	
	
| #include "f2c.h"
 | |
| #include "fio.h"
 | |
| integer f_clos(a) cllist *a;
 | |
| {	unit *b;
 | |
| 	if(a->cunit >= MXUNIT) return(0);
 | |
| 	b= &units[a->cunit];
 | |
| 	if(b->ufd==NULL)
 | |
| 		goto done;
 | |
| 	if (!a->csta)
 | |
| 		if (b->uscrtch == 1)
 | |
| 			goto delete;
 | |
| 		else
 | |
| 			goto keep;
 | |
| 	switch(*a->csta) {
 | |
| 		default:
 | |
| 	 	keep:
 | |
| 		case 'k':
 | |
| 		case 'K':
 | |
| 			if(b->uwrt == 1)
 | |
| 				(void) t_runc((alist *)a);
 | |
| 			if(b->ufnm) {
 | |
| 				(void) fclose(b->ufd);
 | |
| 				free(b->ufnm);
 | |
| 				}
 | |
| 			break;
 | |
| 		case 'd':
 | |
| 		case 'D':
 | |
| 		delete:
 | |
| 			if(b->ufnm) {
 | |
| 				(void) fclose(b->ufd);
 | |
| 				(void) unlink(b->ufnm); /*SYSDEP*/
 | |
| 				free(b->ufnm);
 | |
| 				}
 | |
| 		}
 | |
| 	b->ufd=NULL;
 | |
|  done:
 | |
| 	b->uend=0;
 | |
| 	b->ufnm=NULL;
 | |
| 	return(0);
 | |
| 	}
 | |
|  void
 | |
| f_exit()
 | |
| {	int i;
 | |
| 	static cllist xx;
 | |
| 	if (!xx.cerr) {
 | |
| 		xx.cerr=1;
 | |
| 		xx.csta=NULL;
 | |
| 		for(i=0;i<MXUNIT;i++)
 | |
| 		{
 | |
| 			xx.cunit=i;
 | |
| 			(void) f_clos(&xx);
 | |
| 		}
 | |
| 	}
 | |
| }
 | |
| flush_()
 | |
| {	int i;
 | |
| 	for(i=0;i<MXUNIT;i++)
 | |
| 		if(units[i].ufd != NULL) (void) fflush(units[i].ufd);
 | |
| }
 |