Annotation of researchv10dc/cmd/oworm/t0, revision 1.1

1.1     ! root        1: 
        !             2: static Inode *inodes;
        !             3: static long ip;
        !             4: static long ninodes = 0;
        !             5: static char *nameb;
        !             6: static long np;
        !             7: static long nnameb = 0;
        !             8: static long nblocks;
        !             9: #define                IINC            1024
        !            10: #define                NINC            (64*IINC)
        !            11: 
        !            12: ininit()
        !            13: {
        !            14:        if(nnameb == 0){
        !            15:                nameb = malloc((unsigned)(nnameb = NINC));
        !            16:                if(nameb == 0){
        !            17:                        fprint(2, "wmv: malloc fail, %d bytes\n", nnameb);
        !            18:                        exit(1);
        !            19:                }
        !            20:        }
        !            21:        np = 0;
        !            22:        if(ninodes == 0){
        !            23:                inodes = (Inode *)malloc(sizeof(Inode)*(unsigned)(ninodes = IINC));
        !            24:                if(inodes == 0){
        !            25:                        fprint(2, "wmv: malloc fail, %d inodes %d bytes\n", ninodes, ninodes*sizeof(Inode));
        !            26:                        exit(1);
        !            27:                }
        !            28:        }
        !            29:        ip = 0;
        !            30: }
        !            31: 
        !            32: inadd(s, i)
        !            33:        Superblock *s;
        !            34:        register Inode *i;
        !            35: {
        !            36:        register long len;
        !            37: 
        !            38:        len = strlen(i->name.n)+1;
        !            39:        if(np+len > nnameb){
        !            40:                while(np+len > nnameb)
        !            41:                        nnameb += NINC;
        !            42:                nameb = realloc(nameb, (unsigned)nnameb);
        !            43:                if(nameb == 0){
        !            44:                        fprint(2, "wmv: realloc fail, %d bytes\n", nnameb);
        !            45:                        exit(1);
        !            46:                }
        !            47:        }
        !            48:        strcpy(nameb+np, i->name.n);
        !            49:        i->name.o = np;
        !            50:        np += len;
        !            51:        if(ip == ninodes){
        !            52:                ninodes += IINC;
        !            53:                inodes = (Inode *)realloc((char *)inodes, (unsigned)ninodes*sizeof(Inode));
        !            54:                if(inodes == 0){
        !            55:                        fprint(2, "wmv: realloc fail, %d inodes %d bytes\n", ninodes, ninodes*sizeof(Inode));
        !            56:                        exit(1);
        !            57:                }
        !            58:        }
        !            59:        inodes[ip++] = *i;
        !            60: }
        !            61: 
        !            62: inwrite(s)
        !            63:        Superblock *s;
        !            64: {
        !            65:        char *e;
        !            66: 
        !            67:        if(e = lkwri(s, inodes, ip, nameb, np, 0L)){
        !            68:                fprint(2, "%s\n", e);
        !            69:                return(1);
        !            70:        }
        !            71:        return(0);
        !            72: }

unix.superglobalmegacorp.com

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