install correct aliases file
[unix-history] / usr / src / usr.sbin / edquota / edquota.c
index 2d0e2c6..f37fe82 100644 (file)
@@ -1,18 +1,29 @@
 /*
  * Copyright (c) 1980 Regents of the University of California.
 /*
  * Copyright (c) 1980 Regents of the University of California.
- * All rights reserved.  The Berkeley software License Agreement
- * specifies the terms and conditions for redistribution.
+ * All rights reserved.
+ *
+ * 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.
  */
 
 #ifndef lint
 char copyright[] =
 "@(#) Copyright (c) 1980 Regents of the University of California.\n\
  All rights reserved.\n";
  */
 
 #ifndef lint
 char copyright[] =
 "@(#) Copyright (c) 1980 Regents of the University of California.\n\
  All rights reserved.\n";
-#endif not lint
+#endif /* not lint */
 
 #ifndef lint
 
 #ifndef lint
-static char sccsid[] = "@(#)edquota.c  5.1 (Berkeley) %G%";
-#endif not lint
+static char sccsid[] = "@(#)edquota.c  5.6 (Berkeley) %G%";
+#endif /* not lint */
 
 /*
  * Disk quota editor.
 
 /*
  * Disk quota editor.
@@ -112,11 +123,11 @@ getentry(name)
 
 editit()
 {
 
 editit()
 {
-       register pid, xpid;
-       int stat, omask;
+       register int pid, xpid;
+       long omask;
+       int stat;
 
 
-#define        mask(s) (1<<((s)-1))
-       omask = sigblock(mask(SIGINT)|mask(SIGQUIT)|mask(SIGHUP));
+       omask = sigblock(sigmask(SIGINT)|sigmask(SIGQUIT)|sigmask(SIGHUP));
  top:
        if ((pid = fork()) < 0) {
                extern errno;
  top:
        if ((pid = fork()) < 0) {
                extern errno;
@@ -173,8 +184,8 @@ getprivs(uid)
                fprintf(fd,
 "fs %s blocks (soft = %d, hard = %d) inodes (soft = %d, hard = %d)\n"
                        , dqf[i]
                fprintf(fd,
 "fs %s blocks (soft = %d, hard = %d) inodes (soft = %d, hard = %d)\n"
                        , dqf[i]
-                       , dq[i].dq_bsoftlimit / btodb(1024)
-                       , dq[i].dq_bhardlimit / btodb(1024)
+                       , dbtob(dq[i].dq_bsoftlimit) / 1024
+                       , dbtob(dq[i].dq_bhardlimit) / 1024
                        , dq[i].dq_isoftlimit
                        , dq[i].dq_ihardlimit
                );
                        , dq[i].dq_isoftlimit
                        , dq[i].dq_ihardlimit
                );
@@ -224,8 +235,8 @@ putprivs(uid)
                        fprintf(stderr, "%s: bad format\n", cp);
                        continue;
                }
                        fprintf(stderr, "%s: bad format\n", cp);
                        continue;
                }
-               dq[i].dq_bsoftlimit *= btodb(1024);
-               dq[i].dq_bhardlimit *= btodb(1024);
+               dq[i].dq_bsoftlimit = btodb(dq[i].dq_bsoftlimit * 1024);
+               dq[i].dq_bhardlimit = btodb(dq[i].dq_bhardlimit * 1024);
        }
        fclose(fd);
        n = i;
        }
        fclose(fd);
        n = i;
@@ -239,18 +250,6 @@ putprivs(uid)
                if (j >= NMOUNT)
                        continue;
                *odqf[j] = '\0';
                if (j >= NMOUNT)
                        continue;
                *odqf[j] = '\0';
-               if (dq[i].dq_isoftlimit == odq[j].dq_isoftlimit &&
-                   dq[i].dq_ihardlimit == odq[j].dq_ihardlimit &&
-                   dq[i].dq_bsoftlimit == odq[j].dq_bsoftlimit &&
-                   dq[i].dq_bhardlimit == odq[j].dq_bhardlimit) {
-                       for (j = i; j < NMOUNT; j++) {
-                               dq[j] = dq[j+1];
-                               strcpy(dqf[j], dqf[j+1]);
-                       }
-                       *dqf[j] = '\0';
-                       i--;
-                       continue;
-               }
                /*
                 * This isn't really good enough, it is quite likely
                 * to have changed while we have been away editing,
                /*
                 * This isn't really good enough, it is quite likely
                 * to have changed while we have been away editing,
@@ -356,7 +355,21 @@ getdiscq(uid, dq, dqf)
                        if (fd < 0)
                                continue;
                        lseek(fd, (long)(uid * sizeof dqblk), L_SET);
                        if (fd < 0)
                                continue;
                        lseek(fd, (long)(uid * sizeof dqblk), L_SET);
-                       if (read(fd, &dqblk, sizeof dqblk) != sizeof (dqblk)) {
+                       switch (read(fd, &dqblk, sizeof dqblk)) {
+                       case 0:                 /* EOF */
+                               /*
+                                * Convert implicit 0 quota (EOF)
+                                * into an explicit one (zero'ed dqblk)
+                                */
+                               bzero((caddr_t)&dqblk, sizeof dqblk);
+                               break;
+
+                       case sizeof dqblk:      /* OK */
+                               break;
+
+                       default:                /* ERROR */
+                               fprintf(stderr, "edquota: read error in ");
+                               perror(qfilename);
                                close(fd);
                                continue;
                        }
                                close(fd);
                                continue;
                        }