|
|
researchv10 Norman
#include "fs.h"
char xbuf[4096]; /* also used by prname */
char *
errnm(n)
{
switch(n) {
default:
sprintf(xbuf, "?%d?", n);
return(xbuf);
case Elinksize: return("Elinksize");
case Ebadaddr: return("Ebadaddr");
case Efirst: return("Efirst");
case Ebadread: return("Ebadread");
case Efirstio: return("Efirstio");
case Edirio: return("Edirio");
case Enotdot: return("Enotdot");
case Enotdotdot: return("Enotdotdot");
case Edotino: return("Edotino");
case Ebadino: return("Ebadino");
case Ebadname: return("Ebadname");
case Enullable: return("Enullable");
case Elinkcnt: return("Elinkcnt");
case Emulti: return("Emulti");
case Ebadparent: return("Ebadparent");
case Esuperino: return("Esuperino");
case Esuperfree: return("Esuperfree");
case Einvalid: return("Einvalid");
case Efreelist: return("Efreelist");
case Edup: return("Edup");
case Eshort: return("Eshort");
case Ehole: return("Ehole");
case Etriple: return("Etriple");
case Eshortdir: return("Eshortdir");
case Eattach: return("Eattach");
case Efakeroot: return("Efakeroot");
}
}
adderr(n, a, b)
{
if(!erlen) {
erlen = 100;
erlist = (er *) malloc(erlen * sizeof(er));
if(!erlist)
fatal("can't alloc %d erlist\n", erlen);
}
if(erptr >= erlen) {
erlen *= 3;
erlist = (er *) realloc((char *)erlist, erlen * sizeof(er));
if(!erlist)
fatal("can't realloc %d erlist\n");
}
errcnts[n]++;
erlist[erptr].type = n;
erlist[erptr].a = a;
erlist[erptr].b = b;
erlist[erptr].done = 0;
erptr++;
}
supererr(n, a, b)
{
adderr(n, a, b);
}
inoerr(n, ino, i)
{
adderr(n, ino, i);
}
dupblock(bp, a, b)
bm *bp;
{ static cnt;
if(++cnt <= 20)
pmesg("dup block %d %s %s\n", bp-bmap, btype(a), btype(b));
else if(cnt == 20)
pmesg("more dups\n");
adderr(Edup, bp-bmap, bp->ino);
}
direrror(n, ino, i)
{
adderr(n, ino, i);
}
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.