Annotation of researchv10no/cmd/refer/update/runup3.c, revision 1.1

1.1     ! root        1: # include "runup.h"
        !             2: sortbib()
        !             3: {
        !             4: struct bibfile *bibp;
        !             5: extern int comp(), exch();
        !             6: int nb;
        !             7: for(bibp=bibs; bibp->bibfno>=0; bibp++)
        !             8:        ;
        !             9: nb=bibp-bibs;
        !            10: shell(nb, comp, exch);
        !            11: # if D1
        !            12:        printf("sorted %d bibs\n", nb);
        !            13:        {
        !            14:        struct bibfile *bp;
        !            15:        for(bp=bibs; bp->bibfno>=0; bp++)
        !            16:                printf("  bib%03d\n",bp->bibfno);
        !            17:        }
        !            18: # endif
        !            19: }
        !            20: comp(i,j)
        !            21: {
        !            22: int k;
        !            23: k = strcmp(bibs[i].bibfref, bibs[j].bibfref);
        !            24: if (k!=0) return(k<0);
        !            25: if (bibs[i].bibfstrt == bibs[j].bibfstrt)
        !            26:        {
        !            27:        fprintf(stderr, "Error: files bib%03d and bib%03d are redundant\n",bibs[i].bibfno, bibs[j].bibfno);
        !            28:        unlock();
        !            29:        exit(1);
        !            30:        }
        !            31: return(bibs[i].bibfstrt-bibs[j].bibfstrt<0);
        !            32: }
        !            33: exch(i,j)
        !            34: {
        !            35: struct bibfile tb;
        !            36: tb=bibs[i];
        !            37: bibs[i]=bibs[j];
        !            38: bibs[j]=tb;
        !            39: }
        !            40: # define NMV 100
        !            41: # define NB 1000
        !            42: char *tomove[NMV];
        !            43: int nm = 0;
        !            44: char nmbuff[NB];
        !            45: char *nbmp = nmbuff;
        !            46: svmove(s)
        !            47:        char *s;
        !            48: {
        !            49: int i;
        !            50: for(i=0;i<nm;i++)
        !            51:        if (strcmp(tomove[i], s)==SAME)
        !            52:                return;
        !            53: tomove[nm++] = nbmp;
        !            54: while (*nbmp++ = *s++);
        !            55: assert(nbmp<nmbuff+NB);
        !            56: assert(nm<NMV);
        !            57: return;
        !            58: }
        !            59: remove()
        !            60: {
        !            61: int i;
        !            62: struct bibfile *bp;
        !            63: char newver[100];
        !            64: unlink("XXIND");
        !            65: for(i=0; i<nm; i++)
        !            66:        {
        !            67:        sprintf(newver, "%s.x", tomove[i]);
        !            68:        if (access(newver, 4)!=0)
        !            69:                continue;
        !            70:        unlink(tomove[i]);
        !            71:        link(newver, tomove[i]);
        !            72:        unlink(newver);
        !            73:        }
        !            74: unlink("Ind.ia"); link("XInd.ia", "Ind.ia"); unlink("XInd.ia");
        !            75: unlink("Ind.ib"); link("XInd.ib", "Ind.ib"); unlink("XInd.ib");
        !            76: unlink("Ind.ic"); link("XInd.ic", "Ind.ic"); unlink("XInd.ic");
        !            77: unlink("NN.ia"); unlink ("NN.ib"); unlink("NN.ic");
        !            78: chdir (rundir);
        !            79: for (bp=bibs; bp->bibfno>=0; bp++)
        !            80:        {
        !            81:        sprintf(newver, "bib%03d", bp->bibfno);
        !            82:        unlink(newver);
        !            83:        }
        !            84: }
        !            85: 
        !            86: garbage()
        !            87: {
        !            88: /* called on interrupt only */
        !            89: int i;
        !            90: char newver[100];
        !            91: fprintf(stderr, "Interrupt.\n");
        !            92: for (i=0; i<nm; i++)
        !            93:        unlink(sprintf(newver, "%s.x", tomove[i]));
        !            94: unlink("XInd.ia"); unlink("XInd.ib"); unlink("XInd.ic"); 
        !            95: unlink("XXIND");
        !            96: unlink("NN.ia"); unlink("NN.ib"); unlink("NN.ic"); 
        !            97: unlink(sprintf(newver, "%s.x", newplace)); /* other */
        !            98: unlock();
        !            99: exit(1);
        !           100: }

unix.superglobalmegacorp.com

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