+++ /dev/null
-#include "config.h"
-#include "f2c.h"
-#include "fio.h"
-
-#undef abs
-#undef min
-#undef max
-#include <stdlib.h>
-#ifdef NON_UNIX_STDIO
-#ifndef unlink
-#define unlink remove
-#endif
-#else
-#if defined (MSDOS) && !defined (GO32)
-#include "io.h"
-#else
-extern int unlink (const char *);
-#endif
-#endif
-
-integer
-f_clos (cllist * a)
-{
- unit *b;
-
- if (f__init & 2)
- f__fatal (131, "I/O recursion");
- 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
-f_exit (void)
-{
- int i;
- static cllist xx;
- if (!(f__init & 1))
- return; /* Not initialized, so no open units. */
- /* I/O no longer in progress. If, during an I/O operation (such
- as waiting for the user to enter a line), there is an
- interrupt (such as ^C to stop the program on a UNIX system),
- f_exit() is called, but there is no longer any I/O in
- progress. Without turning off this flag, f_clos() would
- think that there is an I/O recursion in this circumstance. */
- f__init &= ~2;
- if (!xx.cerr)
- {
- xx.cerr = 1;
- xx.csta = NULL;
- for (i = 0; i < MXUNIT; i++)
- {
- xx.cunit = i;
- (void) f_clos (&xx);
- }
- }
-}
-int
-G77_flush_0 (void)
-{
- 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;
-}