SCCS-vsn: usr.sbin/edquota/edquota.c 4.4
-static char sccsid[] = "@(#)edquota.c 4.3 (Berkeley, from Melbourne) %G%";
+static char sccsid[] = "@(#)edquota.c 4.4 (Berkeley, from Melbourne) %G%";
#include <fstab.h>
#include <sys/param.h>
#include <fstab.h>
#include <sys/param.h>
-#define QUOTA
-#include <sys/quota.h>
#include <sys/stat.h>
#include <sys/file.h>
#include <sys/stat.h>
#include <sys/file.h>
+#define QUOTA
+#include <sys/quota.h>
#define DEFEDITOR "/usr/ucb/vi"
#define DEFEDITOR "/usr/ucb/vi"
char tmpfil[] = "/tmp/EdP.aXXXXX";
char *qfname = "quotas";
char tmpfil[] = "/tmp/EdP.aXXXXX";
char *qfname = "quotas";
char *getenv();
main(argc, argv)
char **argv;
{
char *getenv();
main(argc, argv)
char **argv;
{
mktemp(tmpfil);
close(creat(tmpfil, 0600));
chown(tmpfil, getuid(), getgid());
arg0 = *argv++;
if (argc < 2) {
mktemp(tmpfil);
close(creat(tmpfil, 0600));
chown(tmpfil, getuid(), getgid());
arg0 = *argv++;
if (argc < 2) {
- fprintf(stderr, "Usage: %s username ...\n", arg0);
+ fprintf(stderr, "Usage: %s [-p username] username ...\n", arg0);
unlink(tmpfil);
exit(1);
}
unlink(tmpfil);
exit(1);
}
unlink(tmpfil);
exit(1);
}
unlink(tmpfil);
exit(1);
}
- while (--argc >= 0)
- doedit(*argv++);
+ if (argc > 2 && strcmp(*argv, "-p") == 0) {
+ argc--, argv++;
+ uid = getentry(*argv++);
+ if (uid < 0) {
+ unlink(tmpfil);
+ exit(1);
+ }
+ getprivs(uid);
+ argc--;
+ while (argc-- > 0) {
+ uid = getentry(*argv++);
+ if (uid < 0)
+ continue;
+ getdiscq(uid, odq, odqf);
+ putprivs(uid);
+ }
+ unlink(tmpfil);
+ exit(0);
+ }
+ while (--argc >= 0) {
+ uid = getentry(*argv++);
+ if (uid < 0)
+ continue;
+ getprivs(uid);
+ if (editit())
+ putprivs(uid);
+ }
unlink(tmpfil);
exit(0);
}
unlink(tmpfil);
exit(0);
}
-doedit(name)
- register char *name;
+getentry(name)
+ char *name;
- register uid;
- register struct passwd *pw;
+ struct passwd *pw;
+ int uid;
if (alldigits(name))
uid = atoi(name);
else if (pw = getpwnam(name))
uid = pw->pw_uid;
else {
if (alldigits(name))
uid = atoi(name);
else if (pw = getpwnam(name))
uid = pw->pw_uid;
else {
- fprintf(stderr, "%s: no such user\n");
+ fprintf(stderr, "%s: no such user\n", name);
- getprivs(uid);
- if (editit())
- putprivs(uid);