1*12662Smckusick #ifndef lint 2*12662Smckusick static char sccsid[] = "@(#)quotaon.c 4.1 (Melbourne) 05/22/83"; 3*12662Smckusick #endif 4*12662Smckusick /* 5*12662Smckusick * Turn quota on/off for a filesystem 6*12662Smckusick */ 7*12662Smckusick #include <sys/param.h> 8*12662Smckusick 9*12662Smckusick #include <stdio.h> 10*12662Smckusick #include <fstab.h> 11*12662Smckusick 12*12662Smckusick int vflag; /* verbose */ 13*12662Smckusick int aflag; /* all file systems */ 14*12662Smckusick 15*12662Smckusick main(argc, argv) 16*12662Smckusick char **argv; 17*12662Smckusick { 18*12662Smckusick register i, on; 19*12662Smckusick register struct fstab *fs; 20*12662Smckusick 21*12662Smckusick again: 22*12662Smckusick argc--, argv++; 23*12662Smckusick if (argc > 0 && strcmp(*argv, "-v") == 0) { 24*12662Smckusick vflag++; 25*12662Smckusick goto again; 26*12662Smckusick } 27*12662Smckusick if (argc > 0 && strcmp(*argv, "-a") == 0) { 28*12662Smckusick aflag++; 29*12662Smckusick goto again; 30*12662Smckusick } 31*12662Smckusick if (argc <= 0 || strcmp(*argv, "on") && strcmp(*argv, "off")) { 32*12662Smckusick fprintf(stderr, 33*12662Smckusick "usage: setquota [-v] [-a] on | off [filesys...]\n"); 34*12662Smckusick exit(1); 35*12662Smckusick } 36*12662Smckusick on = strcmp(*argv, "on") == 0; 37*12662Smckusick argc--, argv++; 38*12662Smckusick setfsent(); 39*12662Smckusick while ((fs = getfsent()) != NULL) { 40*12662Smckusick if (fs->fs_quotafile == 0 || *fs->fs_quotafile == '\0') 41*12662Smckusick continue; 42*12662Smckusick if (fs->fs_type == 0 || strcmp(fs->fs_type, "rw")) 43*12662Smckusick continue; 44*12662Smckusick if (!aflag && !oneof(fs->fs_file, argv, argc)) 45*12662Smckusick continue; 46*12662Smckusick if (vflag) 47*12662Smckusick printf("%s: quotas turned %s\n", fs->fs_file, 48*12662Smckusick on ? "on" : "off"); 49*12662Smckusick if (on) { 50*12662Smckusick char quotafile[MAXPATHLEN + 1]; 51*12662Smckusick 52*12662Smckusick (void) sprintf(quotafile, "%s/%s", fs->fs_file, 53*12662Smckusick fs->fs_quotafile); 54*12662Smckusick i = setquota(fs->fs_spec, quotafile); 55*12662Smckusick } else 56*12662Smckusick i = setquota(fs->fs_spec, NULL); 57*12662Smckusick if (i < 0) { 58*12662Smckusick fprintf(stderr, "setquota: "); 59*12662Smckusick perror(fs->fs_spec); 60*12662Smckusick } 61*12662Smckusick } 62*12662Smckusick endfsent(); 63*12662Smckusick exit(i < 0); 64*12662Smckusick } 65*12662Smckusick 66*12662Smckusick oneof(target, list, n) 67*12662Smckusick char *target, *list[]; 68*12662Smckusick register int n; 69*12662Smckusick { 70*12662Smckusick register int i; 71*12662Smckusick 72*12662Smckusick for (i = 0; i < n; i++) 73*12662Smckusick if (strcmp(target, list[i]) == 0) 74*12662Smckusick return (1); 75*12662Smckusick return (0); 76*12662Smckusick } 77