diff options
Diffstat (limited to 'contrib/libf2c/libI77/close.c')
-rw-r--r-- | contrib/libf2c/libI77/close.c | 159 |
1 files changed, 77 insertions, 82 deletions
diff --git a/contrib/libf2c/libI77/close.c b/contrib/libf2c/libI77/close.c index 79a3493..769c569 100644 --- a/contrib/libf2c/libI77/close.c +++ b/contrib/libf2c/libI77/close.c @@ -1,9 +1,7 @@ #include "config.h" #include "f2c.h" #include "fio.h" -#ifdef KR_headers -integer f_clos(a) cllist *a; -#else + #undef abs #undef min #undef max @@ -16,91 +14,88 @@ integer f_clos(a) cllist *a; #if defined (MSDOS) && !defined (GO32) #include "io.h" #else -#ifdef __cplusplus -extern "C" int unlink(const char*); -#else -extern int unlink(const char*); -#endif +extern int unlink (const char *); #endif #endif -integer f_clos(cllist *a) -#endif -{ unit *b; +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); + 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); } - void -#ifdef KR_headers -f_exit() -#else -f_exit(void) -#endif -{ 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); - } + 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); } - int -#ifdef KR_headers -G77_flush_0 () -#else + +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) -#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; +{ + 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; } |