BSD 4_1c_2 release
[unix-history] / usr / src / usr.lib / undoc / libpriv / putdiscq.c
CommitLineData
e804469b
C
1/* @(#)putdiscq.c 4.2 (Melbourne) 82/07/17 */
2
3#include <sys/types.h>
4#include <sys/quota.h>
5#include <sys/stat.h>
6
7putdiscq(uid, dq, dqf)
8register uid;
9register struct dquot *dq;
10register char (*dqf)[32];
11{
12 register fd;
13 register cnt;
14 register bit;
15 register res;
16 char file[32+16];
17 struct stat sb;
18
19 cnt = 0;
20 res = 0;
21 bit = 1;
22
23 while (++cnt <= 16 && **dqf) {
24 strcpy(file, *dqf);
25 strcat(file, "/quota");
26 if (stat(file, &sb) < 0 || (fd = open(file, 1)) < 0)
27 res |= bit;
28 else {
29 lseek(fd, (long)uid * (long)sizeof(struct dqblk), 0);
30 if (write(fd, &dq->dq_dqb, sizeof(struct dqblk)) !=
31 sizeof(struct dqblk))
32 res |= bit;
33 close(fd);
34 }
35 quota(Q_SETDLIM, uid, sb.st_dev, &dq->dq_dqb);
36 dq++;
37 dqf++;
38 bit <<= 1;
39 }
40 return (-res);
41}