improve hostname validation: force it even if no HELO command is given.
[unix-history] / usr / src / usr.sbin / ac / ac.c
index 0fd6f71..1c1d0f5 100644 (file)
@@ -1,7 +1,7 @@
 /*
 /*
- * acct [ -w wtmp ] [ -d ] [ -p ] [ people ]
+ * ac [ -w wtmp ] [ -d ] [ -p ] [ people ]
  */
  */
-static char *sccsid = "@(#)ac.c        4.3 (Berkeley) %G%";
+static char *sccsid = "@(#)ac.c        4.6 (Berkeley) %G%";
 
 #include <stdio.h>
 #include <ctype.h>
 
 #include <stdio.h>
 #include <ctype.h>
@@ -13,7 +13,10 @@ static char *sccsid = "@(#)ac.c      4.3 (Berkeley) %G%";
 #define NMAX sizeof(ibuf.ut_name)
 #define LMAX sizeof(ibuf.ut_line)
 
 #define NMAX sizeof(ibuf.ut_name)
 #define LMAX sizeof(ibuf.ut_line)
 
+/*
 #define        TSIZE   1000
 #define        TSIZE   1000
+*/
+#define TSIZE  6242
 #define        USIZE   500
 struct  utmp ibuf;
 
 #define        USIZE   500
 struct  utmp ibuf;
 
@@ -103,7 +106,7 @@ loop()
                dtime = ibuf.ut_time;
                return;
        }
                dtime = ibuf.ut_time;
                return;
        }
-       if(ibuf.ut_line[0] == '}') {
+       if(ibuf.ut_line[0] == '{') {
                if(dtime == 0)
                        return;
                for(tp = tbuf; tp < &tbuf[TSIZE]; tp++)
                if(dtime == 0)
                        return;
                for(tp = tbuf; tp < &tbuf[TSIZE]; tp++)
@@ -128,12 +131,31 @@ loop()
                upall(0);
                return;
        }
                upall(0);
                return;
        }
+       /*
        if (ibuf.ut_line[0]=='t')
                i = (ibuf.ut_line[3]-'0')*10 + (ibuf.ut_line[4]-'0');
        else
                i = TSIZE-1;
        if (i<0 || i>=TSIZE)
                i = TSIZE-1;
        if (ibuf.ut_line[0]=='t')
                i = (ibuf.ut_line[3]-'0')*10 + (ibuf.ut_line[4]-'0');
        else
                i = TSIZE-1;
        if (i<0 || i>=TSIZE)
                i = TSIZE-1;
+       */
+
+       /*
+        * Correction contributed by Phyllis Kantar @ Rand-unix
+        *
+        * Fixes long standing problem with tty names other than 00-99
+        */
+       if (ibuf.ut_line[0]=='t') {
+               i = (ibuf.ut_line[3]-'0');
+               if(ibuf.ut_line[4])
+                       i = i*79 + (ibuf.ut_line[4]-'0');
+       } else
+               i = TSIZE-1;
+       if (i<0 || i>=TSIZE) {
+               i = TSIZE-1;
+               printf("ac: Bad tty name: %s\n", ibuf.ut_line);
+       }
+
        tp = &tbuf[i];
        update(tp, 0);
 }
        tp = &tbuf[i];
        update(tp, 0);
 }