#define ISIZ (BSIZE/sizeof(struct dinode))
struct dinode itab
[ITABSZ
];
struct passwd
*getpwent();
register struct passwd
*lp
;
while((lp
=getpwent()) != 0) {
du
[n
].name
= copy(lp
->pw_name
);
else if (argv
[0][1]=='f')
else if (argv
[0][1]=='c')
printf("cannot open %s\n", file
);
bread(1, (char *)&sblock
, sizeof sblock
);
nfiles
= (sblock
.s_isize
-2)*(BSIZE
/sizeof(struct dinode
));
if (isdigit(c
= getchar()))
else while (c
!='\n' && c
!= EOF
)
for(i
=2; ino
<nfiles
; i
+= ITABSZ
/ISIZ
) {
bread(i
, (char *)itab
, sizeof itab
);
for (j
=0; j
<ITABSZ
&& ino
<nfiles
; j
++) {
register struct dinode
*ip
;
if ((ip
->di_mode
&IFMT
) == 0)
if ((ip
->di_mode
&IFMT
)!=IFDIR
&& (ip
->di_mode
&IFMT
)!=IFREG
)
n
= (ip
->di_size
+BSIZE
-1)/BSIZE
;
du
[ip
->di_uid
].blocks
+= (ip
->di_size
+BSIZE
-1)/BSIZE
;
if (scanf("%d", &fino
)<=0)
while ((n
=getchar())!='\n' && n
!=EOF
)
if (np
= du
[ip
->di_uid
].name
)
printf("%d ", ip
->di_uid
);
while ((n
= getchar())==' ' || n
=='\t')
while (n
!=EOF
&& n
!='\n') {
lseek(fi
, (long)bno
*BSIZE
, 0);
if (read(fi
, buf
, cnt
) != cnt
) {
printf("read error %u\n", bno
);
register struct du
*p1
, *p2
;
if (p1
->blocks
> p2
->blocks
)
if (p1
->blocks
< p2
->blocks
)
return(strcmp(p1
->name
, p2
->name
));
for (i
=0; i
<TSIZE
-1; i
++)
printf("%d %d %D\n", i
, sizes
[i
], t
);
printf("%d %d %D\n", TSIZE
-1, sizes
[TSIZE
-1], overflow
+t
);
qsort(du
, NUID
, sizeof(du
[0]), qcmp
);
printf("%5D\t", du
[i
].blocks
);
printf("%5D\t", du
[i
].nfiles
);
printf("%s\n", du
[i
].name
);
printf("#%d\n", du
[i
].uid
);
p
= malloc((unsigned)n
+1);
for(n
=0; p
[n
] = s
[n
]; n
++)