Initial commit to Gerrit
[profile/ivi/quota.git] / set_limits_example.c
1 #include "config.h"
2
3 #include <sys/types.h>
4 #include <sys/quota.h>
5 #include <errno.h>
6 #include <stdio.h>
7
8 #include "pot.h"
9
10 int copy_user_quota_limits(const char *block_device, uid_t from, uid_t to)
11 {
12         struct dqblk dq;
13
14         if (quotactl(QCMD(Q_GETQUOTA, USRQUOTA), block_device, from, (caddr_t) & dq) == 0) {
15                 if (quotactl(QCMD(Q_SETQLIM, USRQUOTA), block_device, to, (caddr_t) & dq) == 0) {
16                         return (0);
17                 }
18                 else {
19                         errstr(
20                                 _("copy_user_quota_limits: Failed to set userquota for uid %ld : %s\n"),
21                                 to, strerror(errno));
22                         return (1);
23                 }
24         }
25         else {
26                 errstr(
27                         _("copy_user_quota_limits: Failed to get userquota for uid %ld : %s\n"),
28                         from, strerror(errno));
29                 return (1);
30         }
31 }
32
33 int copy_group_quota_limits(const char *block_device, gid_t from, gid_t to)
34 {
35         struct dqblk dq;
36
37         if (quotactl(QCMD(Q_GETQUOTA, GRPQUOTA), block_device, from, (caddr_t) & dq) == 0) {
38                 if (quotactl(QCMD(Q_SETQLIM, GRPQUOTA), block_device, to, (caddr_t) & dq) == 0) {
39                         return (0);
40                 }
41                 else {
42                         errstr(
43                                 _("copy_group_quota_limits: Failed to set groupquota for uid %ld : %s\n"),
44                                 to, strerror(errno));
45                         return (1);
46                 }
47         }
48         else {
49                 errstr(
50                         _("copy_group_quota_limits: Failed to get groupquota for uid %ld : %s\n"),
51                         from, strerror(errno));
52                 return (1);
53         }
54 }
55
56 main(int argc, char **argv)
57 {
58         gettexton();
59         copy_user_quota_limits("/dev/hda8", 152, 151);
60 }