projects
/
unix-history
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
tags
|
clone url
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
no logout time for reboot; minor format change
[unix-history]
/
usr
/
src
/
usr.bin
/
last
/
last.c
diff --git
a/usr/src/usr.bin/last/last.c
b/usr/src/usr.bin/last/last.c
index
d3430c5
..
ea82d2a
100644
(file)
--- a/
usr/src/usr.bin/last/last.c
+++ b/
usr/src/usr.bin/last/last.c
@@
-1,24
+1,30
@@
-static char *sccsid = "@(#)last.c 4.3 (Berkeley) %G%";
+#ifndef lint
+static char *sccsid = "@(#)last.c 4.8 (Berkeley) %G%";
+#endif
+
/*
* last
*/
#include <sys/types.h>
#include <stdio.h>
#include <signal.h>
/*
* last
*/
#include <sys/types.h>
#include <stdio.h>
#include <signal.h>
-#include <stat.h>
+#include <s
ys/s
tat.h>
#include <utmp.h>
#define NMAX sizeof(buf[0].ut_name)
#define LMAX sizeof(buf[0].ut_line)
#include <utmp.h>
#define NMAX sizeof(buf[0].ut_name)
#define LMAX sizeof(buf[0].ut_line)
+#define HMAX sizeof(buf[0].ut_host)
#define SECDAY (24*60*60)
#define lineq(a,b) (!strncmp(a,b,LMAX))
#define nameq(a,b) (!strncmp(a,b,NMAX))
#define SECDAY (24*60*60)
#define lineq(a,b) (!strncmp(a,b,LMAX))
#define nameq(a,b) (!strncmp(a,b,NMAX))
+#define hosteq(a,b) (!strncmp(a,b,HMAX))
#define MAXTTYS 256
char **argv;
int argc;
#define MAXTTYS 256
char **argv;
int argc;
+int nameargs;
struct utmp buf[128];
char ttnames[MAXTTYS][LMAX+1];
struct utmp buf[128];
char ttnames[MAXTTYS][LMAX+1];
@@
-39,16
+45,26
@@
main(ac, av)
int print;
char * crmsg = (char *)0;
long crtime;
int print;
char * crmsg = (char *)0;
long crtime;
+ long outrec = 0;
+ long maxrec = 0x7fffffffL;
time(&buf[0].ut_time);
ac--, av++;
time(&buf[0].ut_time);
ac--, av++;
- argc = ac;
+
nameargs =
argc = ac;
argv = av;
for (i = 0; i < argc; i++) {
argv = av;
for (i = 0; i < argc; i++) {
+ if (argv[i][0] == '-' &&
+ argv[i][1] >= '0' && argv[i][1] <= '9') {
+ maxrec = atoi(argv[i]+1);
+ nameargs--;
+ continue;
+ }
if (strlen(argv[i])>2)
continue;
if (!strcmp(argv[i], "~"))
continue;
if (strlen(argv[i])>2)
continue;
if (!strcmp(argv[i], "~"))
continue;
+ if (!strcmp(argv[i], "ftp"))
+ continue;
if (getpwnam(argv[i]))
continue;
argv[i] = strspl("tty", argv[i]);
if (getpwnam(argv[i]))
continue;
argv[i] = strspl("tty", argv[i]);
@@
-71,9
+87,11
@@
main(ac, av)
print = want(bp);
if (print) {
ct = ctime(&bp->ut_time);
print = want(bp);
if (print) {
ct = ctime(&bp->ut_time);
- printf("%-*.*s %-*.*s %10.10s %5.5s ",
+ printf("%-*.*s %-*.*s
%-*.*s
%10.10s %5.5s ",
NMAX, NMAX, bp->ut_name,
NMAX, NMAX, bp->ut_name,
- LMAX, LMAX, bp->ut_line, ct, 11+ct);
+ LMAX, LMAX, bp->ut_line,
+ HMAX, HMAX, bp->ut_host,
+ ct, 11+ct);
}
for (i = 0; i < MAXTTYS; i++) {
if (ttnames[i][0] == 0) {
}
for (i = 0; i < MAXTTYS; i++) {
if (ttnames[i][0] == 0) {
@@
-90,7
+108,9
@@
main(ac, av)
}
}
if (print) {
}
}
if (print) {
- if (otime == 0)
+ if (lineq(bp->ut_line, "~"))
+ printf("\n");
+ else if (otime == 0)
printf(" still logged in\n");
else {
long delta;
printf(" still logged in\n");
else {
long delta;
@@
-110,6
+130,8
@@
main(ac, av)
asctime(gmtime(&delta))+11);
}
fflush(stdout);
asctime(gmtime(&delta))+11);
}
fflush(stdout);
+ if (++outrec >= maxrec)
+ exit(0);
}
if (lineq(bp->ut_line, "~")) {
for (i = 0; i < MAXTTYS; i++)
}
if (lineq(bp->ut_line, "~")) {
for (i = 0; i < MAXTTYS; i++)
@@
-147,15
+169,18
@@
want(bp)
if (bp->ut_line[0] == '~' && bp->ut_name[0] == '\0')
strcpy(bp->ut_name, "reboot"); /* bandaid */
if (bp->ut_line[0] == '~' && bp->ut_name[0] == '\0')
strcpy(bp->ut_name, "reboot"); /* bandaid */
+ if (strncmp(bp->ut_line, "ftp", 3) == 0)
+ bp->ut_line[3] = '\0';
if (bp->ut_name[0] == 0)
return (0);
if (bp->ut_name[0] == 0)
return (0);
- if (
argc
== 0)
+ if (
nameargs
== 0)
return (1);
av = argv;
return (1);
av = argv;
- for (ac = 0; ac < argc; ac++) {
+ for (ac = 0; ac < argc; ac++, av++) {
+ if (av[0][0] == '-')
+ continue;
if (nameq(*av, bp->ut_name) || lineq(*av, bp->ut_line))
return (1);
if (nameq(*av, bp->ut_name) || lineq(*av, bp->ut_line))
return (1);
- av++;
}
return (0);
}
}
return (0);
}