Annotation of 42BSD/usr.bin/efl/icfile.c, revision 1.1

1.1     ! root        1: #include "defs"
        !             2: 
        !             3: struct { char chars[ 10 ]; };
        !             4: 
        !             5: 
        !             6: crii() /* create names for intermediate files */
        !             7: {
        !             8: 
        !             9: #ifdef unix
        !            10: sprintf(icfile->filename, "eflc.%d", getpid());
        !            11: sprintf(idfile->filename, "efld.%d", getpid());
        !            12: sprintf(iefile->filename, "efle.%d", getpid());
        !            13: #endif
        !            14: 
        !            15: #ifdef gcos
        !            16: sprintf(icfile->filename, "code.efl");
        !            17: sprintf(idfile->filename, "data.efl");
        !            18: sprintf(iefile->filename, "equv.efl");
        !            19: #endif
        !            20: }
        !            21: 
        !            22: 
        !            23: 
        !            24: rmiis()
        !            25: {
        !            26: rmii(icfile);
        !            27: rmii(idfile);
        !            28: rmii(iefile);
        !            29: }
        !            30: 
        !            31: 
        !            32: 
        !            33: 
        !            34: rmii(p)                /* discard the intermediate file */
        !            35: struct fileblock *p;
        !            36: {
        !            37: #ifdef unix
        !            38: if(p)
        !            39:        {
        !            40:        fclose(p->fileptr);
        !            41:        unlink(p->filename);
        !            42:        }
        !            43: #endif
        !            44: 
        !            45: #ifdef gcos
        !            46: if(p)
        !            47:        fclose(p->fileptr, "d");
        !            48: #endif
        !            49: }
        !            50: 
        !            51: 
        !            52: opiis()
        !            53: {
        !            54: opii(icfile);
        !            55: opii(idfile);
        !            56: opii(iefile);
        !            57: }
        !            58: 
        !            59: 
        !            60: 
        !            61: 
        !            62: opii(p)        /* open the intermediate file for writing */
        !            63: struct fileblock *p;
        !            64: {
        !            65: 
        !            66: #ifdef unix
        !            67: if( (p->fileptr = fopen(p->filename, "w")) == NULL)
        !            68:        fatal("cannot open intermediate file");
        !            69: #endif
        !            70: 
        !            71: #ifdef gcos
        !            72: if( (p->fileptr = fopen(p->filename, "wi")) == NULL)
        !            73:        fatal("cannot open intermediate file");
        !            74: #endif
        !            75: 
        !            76: }
        !            77: 
        !            78: 
        !            79: 
        !            80: swii(p)
        !            81: struct fileblock *p;
        !            82: {
        !            83: iifilep = p;
        !            84: }
        !            85: 
        !            86: 
        !            87: 
        !            88: putii(w,n)
        !            89: int *w, n;
        !            90: {
        !            91: if( fwrite(w,sizeof(int),n, iifilep->fileptr) != n)
        !            92:        fatal("write error");
        !            93: }
        !            94: 
        !            95: 
        !            96: 
        !            97: getii(w, n)
        !            98: int *w, n;
        !            99: {
        !           100: if( fread(w,sizeof(int), n, iifilep->fileptr) != n)
        !           101:        fatal("read error");
        !           102: }
        !           103: 
        !           104: 
        !           105: 
        !           106: 
        !           107: cliis()
        !           108: {
        !           109: clii(icfile);
        !           110: clii(idfile);
        !           111: clii(iefile);
        !           112: }
        !           113: 
        !           114: 
        !           115: 
        !           116: 
        !           117: clii(p)        /* close the intermediate file */
        !           118: struct fileblock *p;
        !           119: {
        !           120: #ifdef unix
        !           121: fclose(p->fileptr);
        !           122: #endif
        !           123: 
        !           124: #ifdef gcos
        !           125: fclose(p->fileptr, "rl");
        !           126: #endif
        !           127: }
        !           128: 
        !           129: 
        !           130: 
        !           131: rewii(p)       /* close and rewind the intermediate file for reading */
        !           132: struct fileblock *p;
        !           133: {
        !           134: swii(p);
        !           135: putic(ICEOF,0);
        !           136: clii(p);
        !           137: 
        !           138: #ifdef unix
        !           139: if( (p->fileptr = fopen(p->filename, "r")) == NULL)
        !           140:        fatal("cannot open intermediate file");
        !           141: #endif
        !           142: 
        !           143: #ifdef gcos
        !           144: if( (p->fileptr = fopen(p->filename, "ri")) == NULL)
        !           145:        fatal("cannot open intermediate file");
        !           146: #endif
        !           147: }
        !           148: 
        !           149: 
        !           150: 
        !           151: putic(c,p)
        !           152: int c;
        !           153: int p;
        !           154: {
        !           155: int w[2];
        !           156: prevbg = (c==ICINDENT);
        !           157: w[0] = c;
        !           158: w[1] = p;
        !           159: putii(w,2);
        !           160: }
        !           161: 
        !           162: 
        !           163: getic(p)
        !           164: int *p;
        !           165: {
        !           166: int w[2];
        !           167: 
        !           168: getii(w,2);
        !           169: *p = w[1];
        !           170: return( w[0] );
        !           171: }
        !           172: 
        !           173: 
        !           174: 
        !           175: putsii(l, p)
        !           176: int l;
        !           177: char *p;
        !           178: {
        !           179: int word;
        !           180: register int i, m, n;
        !           181: 
        !           182: n = strlen(p);
        !           183: putic(l, n);
        !           184: m = (n/sizeof(int)) ;
        !           185: while(m-- > 0)
        !           186:        {
        !           187:        for(i=0 ; i<sizeof(int); ++i)
        !           188:                word.chars[i] = *p++;
        !           189:        putii(&word, 1);
        !           190:        }
        !           191: n -= (n/sizeof(int))*sizeof(int);
        !           192: if(n > 0)
        !           193:        {
        !           194:        for(i=0 ; i<n ; ++i)
        !           195:                word.chars[i] = *p++;
        !           196:        putii(&word,1);
        !           197:        }
        !           198: }
        !           199: 
        !           200: 
        !           201: 
        !           202: 
        !           203: ptr getsii(n)
        !           204: int n;
        !           205: {
        !           206: static int incomm[100];
        !           207: int m;
        !           208: register int *q, *qm;
        !           209: char *p;
        !           210: 
        !           211: m = (n + sizeof(int)-1 ) / sizeof(int);
        !           212: q = incomm;
        !           213: qm = q + m;
        !           214: 
        !           215: while(q < qm)
        !           216:        getii(q++, 1);
        !           217: p = incomm;
        !           218: p[n] = '\0';
        !           219: 
        !           220: return(incomm);
        !           221: }

unix.superglobalmegacorp.com

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