- ip = (int *)&spcl;
- s = 0;
- i = sizeof(union u_spcl) / (4*sizeof(int));
- while (--i >= 0) {
- s += *ip++; s += *ip++;
- s += *ip++; s += *ip++;
- }
- spcl.c_checksum = CHECKSUM - s;
- taprec((char *)&spcl);
-}
-
-void
-dsrch(d, size, filesize)
- daddr_t d;
- int size, filesize;
-{
- register struct direct *dp;
- long loc;
- char dblk[MAXBSIZE];
-
- if(dadded)
- return;
- if (filesize > size)
- filesize = size;
- bread(fsbtodb(sblock, d), dblk, filesize);
- for (loc = 0; loc < filesize; ) {
- dp = (struct direct *)(dblk + loc);
- if (dp->d_reclen == 0) {
- msg("corrupted directory, inumber %d\n", ino);
- break;
- }
- loc += dp->d_reclen;
- if(dp->d_ino == 0)
- continue;
- if(dp->d_name[0] == '.') {
- if(dp->d_name[1] == '\0')
- continue;
- if(dp->d_name[1] == '.' && dp->d_name[2] == '\0')
- continue;
- }
- if(BIT(dp->d_ino, nodmap)) {
- dadded++;
- return;
- }
- if(BIT(dp->d_ino, dirmap))
- nsubdir++;