Annotation of researchv10dc/libI77/close.c, revision 1.1

1.1     ! root        1: #include "f2c.h"
        !             2: #include "fio.h"
        !             3: #ifdef KR_headers
        !             4: integer f_clos(a) cllist *a;
        !             5: #else
        !             6: #undef abs
        !             7: #undef min
        !             8: #undef max
        !             9: #include "stdlib.h"
        !            10: #ifdef NON_UNIX_STDIO
        !            11: #ifndef unlink
        !            12: #define unlink remove
        !            13: #endif
        !            14: #else
        !            15: #ifdef MSDOS
        !            16: #include "io.h"
        !            17: #else
        !            18: #ifdef __cplusplus
        !            19: extern "C" int unlink(const char*);
        !            20: #else
        !            21: extern int unlink(const char*);
        !            22: #endif
        !            23: #endif
        !            24: #endif
        !            25: 
        !            26: integer f_clos(cllist *a)
        !            27: #endif
        !            28: {      unit *b;
        !            29: 
        !            30:        if(a->cunit >= MXUNIT) return(0);
        !            31:        b= &f__units[a->cunit];
        !            32:        if(b->ufd==NULL)
        !            33:                goto done;
        !            34:        if (!a->csta)
        !            35:                if (b->uscrtch == 1)
        !            36:                        goto Delete;
        !            37:                else
        !            38:                        goto Keep;
        !            39:        switch(*a->csta) {
        !            40:                default:
        !            41:                Keep:
        !            42:                case 'k':
        !            43:                case 'K':
        !            44:                        if(b->uwrt == 1)
        !            45:                                t_runc((alist *)a);
        !            46:                        if(b->ufnm) {
        !            47:                                fclose(b->ufd);
        !            48:                                free(b->ufnm);
        !            49:                                }
        !            50:                        break;
        !            51:                case 'd':
        !            52:                case 'D':
        !            53:                Delete:
        !            54:                        if(b->ufnm) {
        !            55:                                fclose(b->ufd);
        !            56:                                unlink(b->ufnm); /*SYSDEP*/
        !            57:                                free(b->ufnm);
        !            58:                                }
        !            59:                }
        !            60:        b->ufd=NULL;
        !            61:  done:
        !            62:        b->uend=0;
        !            63:        b->ufnm=NULL;
        !            64:        return(0);
        !            65:        }
        !            66:  void
        !            67: #ifdef KR_headers
        !            68: f_exit()
        !            69: #else
        !            70: f_exit(void)
        !            71: #endif
        !            72: {      int i;
        !            73:        static cllist xx;
        !            74:        if (!xx.cerr) {
        !            75:                xx.cerr=1;
        !            76:                xx.csta=NULL;
        !            77:                for(i=0;i<MXUNIT;i++)
        !            78:                {
        !            79:                        xx.cunit=i;
        !            80:                        (void) f_clos(&xx);
        !            81:                }
        !            82:        }
        !            83: }
        !            84:  int
        !            85: #ifdef KR_headers
        !            86: flush_()
        !            87: #else
        !            88: flush_(void)
        !            89: #endif
        !            90: {      int i;
        !            91:        for(i=0;i<MXUNIT;i++)
        !            92:                if(f__units[i].ufd != NULL && f__units[i].uwrt)
        !            93:                        fflush(f__units[i].ufd);
        !            94: #ifdef __cplusplus
        !            95: return 0;
        !            96: #endif
        !            97: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.