svn commit: r202007 - in user/ed/utmpx/usr.bin: . last
Ed Schouten
ed at FreeBSD.org
Sun Jan 10 15:59:59 UTC 2010
Author: ed
Date: Sun Jan 10 15:59:59 2010
New Revision: 202007
URL: http://svn.freebsd.org/changeset/base/202007
Log:
Make last(1) build. It's still broken.
Modified:
user/ed/utmpx/usr.bin/Makefile
user/ed/utmpx/usr.bin/last/last.c
Modified: user/ed/utmpx/usr.bin/Makefile
==============================================================================
--- user/ed/utmpx/usr.bin/Makefile Sun Jan 10 15:44:48 2010 (r202006)
+++ user/ed/utmpx/usr.bin/Makefile Sun Jan 10 15:59:59 2010 (r202007)
@@ -94,6 +94,7 @@ SUBDIR= alias \
ktrace \
ktrdump \
lam \
+ last \
lastcomm \
ldd \
leave \
Modified: user/ed/utmpx/usr.bin/last/last.c
==============================================================================
--- user/ed/utmpx/usr.bin/last/last.c Sun Jan 10 15:44:48 2010 (r202006)
+++ user/ed/utmpx/usr.bin/last/last.c Sun Jan 10 15:59:59 2010 (r202007)
@@ -82,13 +82,13 @@ LIST_HEAD(ttylisthead, ttytab) ttylist;
struct ttytab {
time_t logout; /* log out time */
- char tty[UT_LINESIZE + 1]; /* terminal name */
+ char tty[sizeof ((struct utmpx *)0)->ut_line]; /* terminal name */
LIST_ENTRY(ttytab) list;
};
static const char *crmsg; /* cause of last reboot */
-static long currentout, /* current logout value */
- maxrec; /* records to display */
+static time_t currentout; /* current logout value */
+static long maxrec; /* records to display */
static const char *file = NULL; /* wtmp file */
static int sflag = 0; /* show delta in seconds */
static int width = 5; /* show seconds in delta */
@@ -206,7 +206,8 @@ main(int argc, char *argv[])
void
wtmp(void)
{
- struct utmp *bp; /* current structure */
+#if 0
+ struct utmpx *bp; /* current structure */
int bytes, wfd;
char ct[80];
struct tm *tm;
@@ -219,7 +220,7 @@ wtmp(void)
bl = (stb.st_size + sizeof(buf) - 1) / sizeof(buf);
(void)time(&t);
- buf[0].ut_time = _time_to_int(t);
+ buf[0].ut_tv.tv_sec = t;
(void)signal(SIGINT, onintr);
(void)signal(SIGQUIT, onintr);
@@ -230,10 +231,11 @@ wtmp(void)
for (bp = &buf[bytes / sizeof(buf[0]) - 1]; bp >= buf; --bp)
doentry(bp);
}
- t = _int_to_time(buf[0].ut_time);
+ t = buf[0].ut_tv.tv_sec;
tm = localtime(&t);
(void) strftime(ct, sizeof(ct), "\nwtmp begins %+\n", tm);
printf("%s", ct);
+#endif
}
/*
@@ -257,8 +259,8 @@ doentry(struct utmpx *bp)
tt = LIST_NEXT(tt, list);
free(ttx);
}
- currentout = -bp->ut_time;
- crmsg = strncmp(bp->ut_name, "shutdown", UT_NAMESIZE) ?
+ currentout = -bp->ut_tv.tv_sec;
+ crmsg = strcmp(bp->ut_user, "shutdown") ?
"crash" : "shutdown";
/*
* if we're in snapshot mode, we want to exit if this
@@ -286,7 +288,7 @@ doentry(struct utmpx *bp)
}
/* find associated tty */
LIST_FOREACH(tt, &ttylist, list)
- if (!strncmp(tt->tty, bp->ut_line, UT_LINESIZE))
+ if (!strcmp(tt->tty, bp->ut_line))
break;
if (tt == NULL) {
@@ -295,7 +297,7 @@ doentry(struct utmpx *bp)
if (tt == NULL)
errx(1, "malloc failure");
tt->logout = currentout;
- strncpy(tt->tty, bp->ut_line, UT_LINESIZE);
+ strcpy(tt->tty, bp->ut_line);
LIST_INSERT_HEAD(&ttylist, tt, list);
}
@@ -303,7 +305,7 @@ doentry(struct utmpx *bp)
* print record if not in snapshot mode and wanted
* or in snapshot mode and in snapshot range
*/
- if (bp->ut_name[0] && (want(bp) || (bp->ut_time < snaptime &&
+ if (bp->ut_user[0] && (want(bp) || (bp->ut_tv.tv_sec < snaptime &&
(tt->logout > snaptime || tt->logout < 1)))) {
snapfound = 1;
/*
@@ -317,7 +319,7 @@ doentry(struct utmpx *bp)
bp->ut_line[4] = '\0';
printentry(bp, tt);
}
- tt->logout = bp->ut_time;
+ tt->logout = bp->ut_tv.tv_sec;
}
/*
@@ -337,15 +339,13 @@ printentry(struct utmpx *bp, struct ttyt
if (maxrec != -1 && !maxrec--)
exit(0);
- t = _int_to_time(bp->ut_time);
+ t = bp->ut_tv.tv_sec;
tm = localtime(&t);
(void) strftime(ct, sizeof(ct), d_first ?
(yflag ? "%a %e %b %Y %R" : "%a %e %b %R") :
(yflag ? "%a %b %e %Y %R" : "%a %b %e %R"), tm);
- printf("%-*.*s %-*.*s %-*.*s %s%c",
- UT_NAMESIZE, UT_NAMESIZE, bp->ut_name,
- UT_LINESIZE, UT_LINESIZE, bp->ut_line,
- UT_HOSTSIZE, UT_HOSTSIZE, bp->ut_host,
+ printf("%-10s %-8s %-24.24s %s%c",
+ bp->ut_user, bp->ut_line, bp->ut_host,
ct, tt == NULL ? '\n' : ' ');
if (tt == NULL)
return;
@@ -361,7 +361,7 @@ printentry(struct utmpx *bp, struct ttyt
(void) strftime(ct, sizeof(ct), "%R", tm);
printf("- %s", ct);
}
- delta = tt->logout - bp->ut_time;
+ delta = tt->logout - bp->ut_tv.tv_sec;
if (sflag) {
printf(" (%8ld)\n", (long)delta);
} else {
@@ -392,15 +392,15 @@ want(struct utmpx *bp)
for (step = arglist; step; step = step->next)
switch(step->type) {
case HOST_TYPE:
- if (!strncasecmp(step->name, bp->ut_host, UT_HOSTSIZE))
+ if (!strcasecmp(step->name, bp->ut_host))
return (YES);
break;
case TTY_TYPE:
- if (!strncmp(step->name, bp->ut_line, UT_LINESIZE))
+ if (!strcmp(step->name, bp->ut_line))
return (YES);
break;
case USER_TYPE:
- if (!strncmp(step->name, bp->ut_name, UT_NAMESIZE))
+ if (!strcmp(step->name, bp->ut_user))
return (YES);
break;
}
@@ -561,7 +561,7 @@ onintr(int signo)
{
char ct[80];
struct tm *tm;
- time_t t = _int_to_time(buf[0].ut_time);
+ time_t t = buf[0].ut_tv.tv_sec;
tm = localtime(&t);
(void) strftime(ct, sizeof(ct),
More information about the svn-src-user
mailing list