BSD 4_1c_2 release
[unix-history] / usr / src / usr.lib / undoc / libpriv / putdiscq.c
/* @(#)putdiscq.c 4.2 (Melbourne) 82/07/17 */
#include <sys/types.h>
#include <sys/quota.h>
#include <sys/stat.h>
putdiscq(uid, dq, dqf)
register uid;
register struct dquot *dq;
register char (*dqf)[32];
{
register fd;
register cnt;
register bit;
register res;
char file[32+16];
struct stat sb;
cnt = 0;
res = 0;
bit = 1;
while (++cnt <= 16 && **dqf) {
strcpy(file, *dqf);
strcat(file, "/quota");
if (stat(file, &sb) < 0 || (fd = open(file, 1)) < 0)
res |= bit;
else {
lseek(fd, (long)uid * (long)sizeof(struct dqblk), 0);
if (write(fd, &dq->dq_dqb, sizeof(struct dqblk)) !=
sizeof(struct dqblk))
res |= bit;
close(fd);
}
quota(Q_SETDLIM, uid, sb.st_dev, &dq->dq_dqb);
dq++;
dqf++;
bit <<= 1;
}
return (-res);
}