* Copyright (c) 1980 Regents of the University of California.
* All rights reserved. The Berkeley software License Agreement
* specifies the terms and conditions for redistribution.
"@(#) Copyright (c) 1980 Regents of the University of California.\n\
static char sccsid
[] = "@(#)quotaon.c 5.2 (Berkeley) %G%";
* Turn quota on/off for a filesystem.
struct mtab mtab
[NMOUNT
];
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",
mf
= open("/etc/mtab", O_RDONLY
);
(void) read(mf
, (char *)mtab
, sizeof (mtab
));
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 /etc/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
);
changemtab(fs
, FSTAB_RW
);
(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
);
changemtab(fs
, FSTAB_RQ
);
fprintf(stderr
, "setquota: ");
if (strcmp(target
, list
[i
]) == 0) {
register struct fstab
*fs
;
register struct mtab
*mp
;
cp
= index(fs
->fs_spec
, '\0');
cp
= rindex(fs
->fs_spec
, '/');
for (mp
= mtab
; mp
< &mtab
[NMOUNT
]; mp
++)
if (strcmp(mp
->m_dname
, cp
) == 0)
for (mp
= mtab
; mp
< &mtab
[NMOUNT
]; mp
++)
if (mp
->m_path
[0] == '\0')
strcpy(mp
->m_type
, type
);
while (mp
> mtab
&& mp
->m_path
[0] == '\0')
mf
= creat("/etc/mtab", 0644);
(void) write(mf
, (char *)mtab
, (mp
- mtab
+ 1) * sizeof (struct mtab
));
* Verify file system is mounted and not readonly.
register struct fstab
*fs
;
register struct mtab
*mp
;
cp
= index(fs
->fs_spec
, '\0');
cp
= rindex(fs
->fs_spec
, '/');
for (mp
= mtab
; mp
< mtab
+ NMOUNT
; mp
++) {
if (mp
->m_path
[0] == '\0')
if (strcmp(cp
, mp
->m_dname
) == 0) {
if (strcmp(mp
->m_type
, FSTAB_RO
) == 0) {
printf("%s: mounted read-only\n", fs
->fs_file
);
printf("%s: not mounted\n", fs
->fs_file
);