Does anyone object to this patch adding a -n option to repquota?  A
student admin on a RedHat system I help administer was running into
problems with their repquota truncating usernames[1] and I realized that
repquota really ought to have a -n option since that would be handy
for some scripts and would optionally eliminate the dependency of the
password database.

-- Brooks

[1] Fixed in 4.4BSD, maybe earlier

Index: repquota.8
===================================================================
RCS file: /usr/cvs/src/usr.sbin/repquota/repquota.8,v
retrieving revision 1.9
diff -u -p -r1.9 repquota.8
--- repquota.8  12 Dec 2002 17:26:03 -0000      1.9
+++ repquota.8  1 Jul 2003 23:56:37 -0000
@@ -44,11 +44,13 @@
 .Sh SYNOPSIS
 .Nm
 .Op Fl g
+.Op Fl n
 .Op Fl u
 .Op Fl v
 .Ar filesystem Ar ...
 .Nm
 .Op Fl g
+.Op Fl n
 .Op Fl u
 .Op Fl v
 .Fl a
@@ -66,6 +68,9 @@ Print the quotas of all the file systems
 .It Fl g
 Print only group quotas (the default is to print both
 group and user quotas if they exist).
+.It Fl n
+Display user and group IDs numerically rather than converting to
+a user or group name.
 .It Fl u
 Print only user quotas (the default is to print both
 group and user quotas if they exist).
Index: repquota.c
===================================================================
RCS file: /usr/cvs/src/usr.sbin/repquota/repquota.c,v
retrieving revision 1.15
diff -u -p -r1.15 repquota.c
--- repquota.c  3 May 2003 21:06:39 -0000       1.15
+++ repquota.c  1 Jul 2003 23:51:16 -0000
@@ -96,6 +96,7 @@ u_long highid[MAXQUOTAS];     /* highest add
 
 int    vflag;                  /* verbose */
 int    aflag;                  /* all filesystems */
+int    nflag;                  /* display user/group by id */
 
 int hasquota(struct fstab *, int, char **);
 int oneof(char *, char *[], int);
@@ -113,7 +114,7 @@ main(int argc, char **argv)
        long i, argnum, done = 0;
        char ch, *qfnp;
 
-       while ((ch = getopt(argc, argv, "aguv")) != -1) {
+       while ((ch = getopt(argc, argv, "agnuv")) != -1) {
                switch(ch) {
                case 'a':
                        aflag++;
@@ -121,6 +122,9 @@ main(int argc, char **argv)
                case 'g':
                        gflag++;
                        break;
+               case 'n':
+                       nflag++;
+                       break;
                case 'u':
                        uflag++;
                        break;
@@ -140,13 +144,13 @@ main(int argc, char **argv)
                        gflag++;
                uflag++;
        }
-       if (gflag) {
+       if (gflag && !nflag) {
                setgrent();
                while ((gr = getgrent()) != 0)
                        (void) addid((u_long)gr->gr_gid, GRPQUOTA, gr->gr_name);
                endgrent();
        }
-       if (uflag) {
+       if (uflag && !nflag) {
                setpwent();
                while ((pw = getpwent()) != 0)
                        (void) addid((u_long)pw->pw_uid, USRQUOTA, pw->pw_name);
@@ -183,8 +187,8 @@ static void
 usage()
 {
        fprintf(stderr, "%s\n%s\n",
-               "usage: repquota [-v] [-g] [-u] -a",
-               "       repquota [-v] [-g] [-u] filesystem ...");
+               "usage: repquota [-v] [-g] [-n] [-u] -a",
+               "       repquota [-v] [-g] [-n] [-u] filesystem ...");
        exit(1);
 }
 

-- 
Any statement of the form "X is the one, true Y" is FALSE.
PGP fingerprint 655D 519C 26A7 82E7 2529  9BF0 5D8E 8BE9 F238 1AD4

Attachment: pgp00000.pgp
Description: PGP signature

Reply via email to