* Copyright (c) 1980 Regents of the University of California.
* Redistribution and use in source and binary forms are permitted
* provided that the above copyright notice and this paragraph are
* duplicated in all such forms and that any documentation,
* advertising materials, and other materials related to such
* distribution and use acknowledge that the software was developed
* by the University of California, Berkeley. The name of the
* University may not be used to endorse or promote products derived
* from this software without specific prior written permission.
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
"@(#) Copyright (c) 1980 Regents of the University of California.\n\
static char sccsid
[] = "@(#)quotaon.c 5.6 (Berkeley) %G%";
* Turn quota on/off for a filesystem.
int aflag
; /* all file systems */
char quotafile
[MAXPATHLEN
+ 1];
char *index(), *rindex();
register struct fstab
*fs
;
int offmode
= 0, errs
= 0, i
;
whoami
= rindex(*argv
, '/') + 1;
if (strcmp(whoami
, "quotaoff") == 0)
else if (strcmp(whoami
, "quotaon") != 0) {
fprintf(stderr
, "Name must be quotaon or quotaoff not %s\n",
if (argc
> 0 && strcmp(*argv
, "-v") == 0) {
if (argc
> 0 && strcmp(*argv
, "-a") == 0) {
if (argc
<= 0 && !aflag
) {
fprintf(stderr
, "Usage:\n\t%s [-v] -a\n\t%s [-v] filesys ...\n",
while ((fs
= getfsent()) != NULL
) {
(fs
->fs_type
== 0 || strcmp(fs
->fs_type
, "rq") != 0))
!(oneof(fs
->fs_file
, argv
, argc
) ||
oneof(fs
->fs_spec
, argv
, argc
)))
errs
+= quotaonoff(fs
, offmode
);
for (i
= 0; i
< argc
; i
++)
if ((done
& (1 << i
)) == 0)
fprintf(stderr
, "%s not found in fstab\n",
register struct fstab
*fs
;
if (strcmp(fs
->fs_file
, "/") && readonly(fs
))
if (setquota(fs
->fs_spec
, NULL
) < 0)
printf("%s: quotas turned off\n", fs
->fs_file
);
(void) sprintf(quotafile
, "%s/%s", fs
->fs_file
, qfname
);
if (setquota(fs
->fs_spec
, quotafile
) < 0)
printf("%s: quotas turned on\n", fs
->fs_file
);
fprintf(stderr
, "setquota: ");
if (strcmp(target
, list
[i
]) == 0) {
* Verify file system is mounted and not readonly.
register struct fstab
*fs
;
if (statfs(fs
->fs_file
, &fsbuf
) < 0 ||
strcmp(fsbuf
.f_mntonname
, fs
->fs_file
) ||
strcmp(fsbuf
.f_mntfromname
, fs
->fs_spec
)) {
printf("%s: not mounted\n", fs
->fs_file
);
if (fsbuf
.f_flags
& M_RDONLY
) {
printf("%s: mounted read-only\n", fs
->fs_file
);