(I'm working on a Sun Sparc Station Station 10 with Solaris2.4)
- I have problems trying to do a program that put quota to a user.
I know that with ioctl(2) with Q_QUOTACTL as request and a pointer to
"struct quotctl" as arg i can do it. The quotctl structure is defined
(in /usr/include/sys/fs/ufs_quota.h) as:
struct quotctl {
int op; /* operation to do .. */
uid_t uid; /* UID of the user .. */
caddr_t addr;
};
Now if i want to get the disk quotas information of a user wich uid is
<uid> i must to to use op = Q_GETQUOTA and addr must to point to a
dqblk structure (also defined in /usr/include/sys/fs/ufs_quota.h), here
is my problem!!, how i can to do that addr point to a dqblk structure??!
I thought that the following would work :
struct quotctl *qctl;
struct dqblk *dq;
int fd;
fp = open("/fs/quotas", O_RDWR);
qctl = (struct quotctl *)malloc(sizeof(struct quotctl));
qctl->op = Q_GETQUOTA;
qctl->uid = <uid>;
qctl->addr = (caddr *)dq;
ioctl(fd, Q_QUOTACTL, qctl);
But this do that ioctl returns (througt perror(3C)) "Invalid argument".
So, i think that addr field of quotctl structure is wrong, how i must
to set it??
Any help will be very appreciated,
Very thanks in advance..
-- ++ Salvador Ramirez Flandes mailto:sram@inf.UDEC.CL ++ ++ Unix/Internet System Administrator http://www.inf.udec.cl/sram ++ ++ DIICC, UDEC - CHILE Voice: +56 (41) 234985-2315 ++