static Inode *inodes; static long ip; static long ninodes = 0; static char *nameb; static long np; static long nnameb = 0; static long nblocks; #define IINC 1024 #define NINC (64*IINC) ininit() { if(nnameb == 0){ nameb = malloc((unsigned)(nnameb = NINC)); if(nameb == 0){ fprint(2, "wmv: malloc fail, %d bytes\n", nnameb); exit(1); } } np = 0; if(ninodes == 0){ inodes = (Inode *)malloc(sizeof(Inode)*(unsigned)(ninodes = IINC)); if(inodes == 0){ fprint(2, "wmv: malloc fail, %d inodes %d bytes\n", ninodes, ninodes*sizeof(Inode)); exit(1); } } ip = 0; } inadd(s, i) Superblock *s; register Inode *i; { register long len; len = strlen(i->name.n)+1; if(np+len > nnameb){ while(np+len > nnameb) nnameb += NINC; nameb = realloc(nameb, (unsigned)nnameb); if(nameb == 0){ fprint(2, "wmv: realloc fail, %d bytes\n", nnameb); exit(1); } } strcpy(nameb+np, i->name.n); i->name.o = np; np += len; if(ip == ninodes){ ninodes += IINC; inodes = (Inode *)realloc((char *)inodes, (unsigned)ninodes*sizeof(Inode)); if(inodes == 0){ fprint(2, "wmv: realloc fail, %d inodes %d bytes\n", ninodes, ninodes*sizeof(Inode)); exit(1); } } inodes[ip++] = *i; } inwrite(s) Superblock *s; { char *e; if(e = lkwri(s, inodes, ip, nameb, np, 0L)){ fprint(2, "%s\n", e); return(1); } return(0); }