static char *sccsid
= "@(#)ac.c 4.7 (Berkeley) %G%";
* ac [ -w wtmp ] [ -d ] [ -p ] [ people ]
#define NMAX sizeof(ibuf.ut_name)
#define LMAX sizeof(ibuf.ut_line)
while (--argc
> 0 && **++argv
== '-')
if ((wf
= fopen(wtmp
, "r")) == NULL
) {
if (fread((char *)&ibuf
, sizeof(ibuf
), 1, wf
) != 1)
if (isprint(c
) && c
!= ' ') {
register struct tbuf
*tp
;
register struct ubuf
*up
;
if(ibuf
.ut_line
[0] == '|') {
if(ibuf
.ut_line
[0] == '{') {
for(tp
= tbuf
; tp
< &tbuf
[TSIZE
]; tp
++)
tp
->ttime
+= ibuf
.ut_time
-dtime
;
if (lastime
>ibuf
.ut_time
|| lastime
+(1.5*day
)<ibuf
.ut_time
)
if (byday
&& ibuf
.ut_time
> midnight
) {
for (up
=ubuf
; up
< &ubuf
[USIZE
]; up
++)
if (ibuf
.ut_line
[0] == '~') {
if (ibuf.ut_line[0]=='t')
i = (ibuf.ut_line[3]-'0')*10 + (ibuf.ut_line[4]-'0');
* 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');
i
= i
*79 + (ibuf
.ut_line
[4]-'0');
printf("ac: Bad tty name: %s\n", ibuf
.ut_line
);
for (i
=0; i
<USIZE
; i
++) {
if (pflag
&& ubuf
[i
].utime
> 0) {
printf("\t%-*.*s%6.2f\n", NMAX
, NMAX
,
ubuf
[i
].uname
, ubuf
[i
].utime
/3600.);
printf("\ttotal%9.2f\n", ttime
/3600.);
register struct tbuf
*tp
;
for (tp
=tbuf
; tp
< &tbuf
[TSIZE
]; tp
++)
if (ibuf
.ut_name
[0]=='\0') {
for (up
=ubuf
; up
< &ubuf
[USIZE
]; up
++) {
if (up
->uname
[0] == '\0')
for (j
=0; j
<NMAX
&& up
->uname
[j
]==ibuf
.ut_name
[j
]; j
++);
up
->uname
[j
] = ibuf
.ut_name
[j
];
for (j
=0; j
<pcount
; j
++) {
if (*p
== ubuf
[i
].uname
[k
]) {
if (*p
++ == '\0' || k
== NMAX
-1)
midnight
= 60*(long)tb
.timezone
;
if (localtime(&ttime
)->tm_isdst
)
while (midnight
<= ibuf
.ut_time
)
printf("%.6s", ctime(&x
)+4);