123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- #include "f2c.h"
- #include "fio.h"
- #ifdef KR_headers
- integer 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 __cplusplus
- extern "C" int unlink(const char*);
- #else
- extern int unlink(const char*);
- #endif
- #endif
- #endif
- #ifdef __cplusplus
- extern "C" {
- #endif
- integer 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_headers
- f_exit()
- #else
- f_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_headers
- flush_()
- #else
- flush_(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
|