| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 | #include "f2c.h"#include "fio.h"#ifdef KR_headersinteger f_clos(a) cllist *a;#else#undef abs#undef min#undef max#include "stdlib.h"#ifdef NON_UNIX_STDIO#ifndef unlink#define unlink remove#endif#else#ifdef MSDOS#include "io.h"#else#ifdef __cplusplusextern "C" int unlink(const char*);#elseextern int unlink(const char*);#endif#endif#endif#ifdef __cplusplusextern "C" {#endifinteger f_clos(cllist *a)#endif{	unit *b;	if(a->cunit >= MXUNIT) return(0);	b= &f__units[a->cunit];	if(b->ufd==NULL)		goto done;	if (b->uscrtch == 1)		goto Delete;	if (!a->csta)		goto Keep;	switch(*a->csta) {		default:	 	Keep:		case 'k':		case 'K':			if(b->uwrt == 1)				t_runc((alist *)a);			if(b->ufnm) {				fclose(b->ufd);				free(b->ufnm);				}			break;		case 'd':		case 'D':		Delete:			fclose(b->ufd);			if(b->ufnm) {				unlink(b->ufnm); /*SYSDEP*/				free(b->ufnm);				}		}	b->ufd=NULL; done:	b->uend=0;	b->ufnm=NULL;	return(0);	} void#ifdef KR_headersf_exit()#elsef_exit(void)#endif{	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);		}	}} int#ifdef KR_headersflush_()#elseflush_(void)#endif{	int i;	for(i=0;i<MXUNIT;i++)		if(f__units[i].ufd != NULL && f__units[i].uwrt)			fflush(f__units[i].ufd);return 0;}#ifdef __cplusplus}#endif
 |