diff options
author | Samba Release Account <samba-bugs@samba.org> | 1997-08-19 19:22:26 +0000 |
---|---|---|
committer | Samba Release Account <samba-bugs@samba.org> | 1997-08-19 19:22:26 +0000 |
commit | e9269c67a59ffa741123cb2ce3ab8dfb97136dec (patch) | |
tree | 5a1121114ce4e6944379f825d995b61c6e059c99 /source3/smbd/quotas.c | |
parent | c3453bae126c040fa1f90a77a18dfd4fd7536d4a (diff) | |
download | samba-e9269c67a59ffa741123cb2ce3ab8dfb97136dec.tar.gz samba-e9269c67a59ffa741123cb2ce3ab8dfb97136dec.tar.bz2 samba-e9269c67a59ffa741123cb2ce3ab8dfb97136dec.zip |
Makefile: Changed for HPUX10 tidyup.
includes.h: Changed for HPUX10 tidyup.
ipc.c: Fixed bug where getting local server list from NT browsers would
fail.
nmbsync.c: Fixed bug where getting local server list from NT browsers would
fail.
proto.h: Changed for crash bug on SCO with USE_MMAP.
quotas.c: Added OSF quotas (patch from Bret Giddings <bret@essex.ac.uk>).
Rolled back solaris uid change - I think it was wrong.
reply.c: Changed for crash bug on SCO with USE_MMAP.
server.c: Removed Lukes changes. Changed for crash bug on SCO with USE_MMAP.
smb.h: Changed for crash bug on SCO with USE_MMAP.
smbpasswd.c:Fixed crash bug with Lukes changes.
uid.c: Removed Lukes changes.
util.c: Fixed I18N bug with extended char filenames and widelinks = no.
Jeremy (jallison@whistle.com)
(This used to be commit bf1c79f7fd7f9beec4f9f4e58337cadceeb1cb38)
Diffstat (limited to 'source3/smbd/quotas.c')
-rw-r--r-- | source3/smbd/quotas.c | 45 |
1 files changed, 43 insertions, 2 deletions
diff --git a/source3/smbd/quotas.c b/source3/smbd/quotas.c index 883c2c050d..d19d386e27 100644 --- a/source3/smbd/quotas.c +++ b/source3/smbd/quotas.c @@ -331,8 +331,8 @@ BOOL disk_quotas(char *path, int *bsize, int *dfree, int *dsize) ret = quotactl(Q_GETQUOTA, name, euser_id, &D); #endif - seteuid(euser_id); /* Restore the original uid status. */ - setuid(user_id); + setuid(user_id); /* Restore the original uid status. */ + seteuid(euser_id); if (ret < 0) { DEBUG(2,("disk_quotas ioctl (Solaris) failed\n")); @@ -363,6 +363,47 @@ DEBUG(5,("disk_quotas for path \"%s\" returning bsize %d, dfree %d, dsize %d\n" return(True); } + +#elif defined(OSF1) +#include <ufs/quota.h> + +/**************************************************************************** +try to get the disk space from disk quotas - OFS1 version +****************************************************************************/ +BOOL disk_quotas(char *path, int *bsize, int *dfree, int *dsize) +{ + uid_t user_id, euser_id; + int r; + struct dqblk D; + struct stat S; + + euser_id = geteuid(); + user_id = getuid(); + + setreuid(euser_id, euser_id); + r= quotactl(path,QCMD(Q_GETQUOTA, USRQUOTA),euser_id,(char *) &D); + if (setreuid(user_id, euser_id) == -1) + DEBUG(5,("Unable to reset uid to %d\n", user_id)); + + *bsize = DEV_BSIZE; + + if (r) + return(False); + + /* Use softlimit to determine disk space, except when it has been exceeded */ + + if (D.dqb_bsoftlimit==0) + return(False); + + if ((D.dqb_curblocks>D.dqb_bsoftlimit)) { + *dfree = 0; + *dsize = D.dqb_curblocks; + } else { + *dfree = D.dqb_bsoftlimit - D.dqb_curblocks; + *dsize = D.dqb_bsoftlimit; + } + return (True); +} #else #ifdef __FreeBSD__ |