svn commit: r338452 - stable/11/usr.sbin/lastlogin
Philip Paeps
philip at FreeBSD.org
Tue Sep 4 09:58:15 UTC 2018
Author: philip
Date: Tue Sep 4 09:58:13 2018
New Revision: 338452
URL: https://svnweb.freebsd.org/changeset/base/338452
Log:
MFC r338353:
Add libxo(3) support to lastlogin(8).
Modified:
stable/11/usr.sbin/lastlogin/Makefile
stable/11/usr.sbin/lastlogin/lastlogin.8
stable/11/usr.sbin/lastlogin/lastlogin.c
Directory Properties:
stable/11/ (props changed)
Modified: stable/11/usr.sbin/lastlogin/Makefile
==============================================================================
--- stable/11/usr.sbin/lastlogin/Makefile Tue Sep 4 09:53:45 2018 (r338451)
+++ stable/11/usr.sbin/lastlogin/Makefile Tue Sep 4 09:58:13 2018 (r338452)
@@ -2,5 +2,6 @@
PROG= lastlogin
MAN= lastlogin.8
+LIBADD= xo
.include <bsd.prog.mk>
Modified: stable/11/usr.sbin/lastlogin/lastlogin.8
==============================================================================
--- stable/11/usr.sbin/lastlogin/lastlogin.8 Tue Sep 4 09:53:45 2018 (r338451)
+++ stable/11/usr.sbin/lastlogin/lastlogin.8 Tue Sep 4 09:58:13 2018 (r338452)
@@ -31,7 +31,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
-.Dd June 6, 2011
+.Dd August 28, 2018
.Dt LASTLOGIN 8
.Os
.Sh NAME
@@ -39,6 +39,7 @@
.Nd indicate last login time of users
.Sh SYNOPSIS
.Nm
+.Op Fl -libxo
.Op Fl f Ar file
.Op Fl rt
.Op Ar user ...
@@ -68,6 +69,13 @@ The last login database is never turned over or delete
.Pp
The following options are available:
.Bl -tag -width indent
+.It Fl -libxo
+Generate output via
+.Xr libxo 3
+in a selection of different human and machine readable formats.
+See
+.Xr xo_parse_args 3
+for details on command line arguments.
.It Fl f Ar file
Open last login database
.Ar file
@@ -86,9 +94,15 @@ last login database
.Xr last 1 ,
.Xr getutxent 3 ,
.Xr ac 8
+.Xr libxo 3 ,
+.Xr xo_parse_args 3
.Sh AUTHORS
+.An -nosplit
.An John M. Vinopal
wrote this program in January 1996 and contributed it
to the
.Nx
project.
+.An Philip Paeps added
+.Xr libxo 3
+support in August 2018.
Modified: stable/11/usr.sbin/lastlogin/lastlogin.c
==============================================================================
--- stable/11/usr.sbin/lastlogin/lastlogin.c Tue Sep 4 09:53:45 2018 (r338451)
+++ stable/11/usr.sbin/lastlogin/lastlogin.c Tue Sep 4 09:58:13 2018 (r338452)
@@ -2,6 +2,7 @@
* SPDX-License-Identifier: BSD-4-Clause
*
* Copyright (c) 1996 John M. Vinopal
+ * Copyright (c) 2018 Philip Paeps
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -46,6 +47,8 @@ __RCSID("$NetBSD: lastlogin.c,v 1.4 1998/02/03 04:45:3
#include <unistd.h>
#include <utmpx.h>
+#include <libxo/xo.h>
+
int main(int, char **);
static void output(struct utmpx *);
static void usage(void);
@@ -79,6 +82,10 @@ main(int argc, char *argv[])
int ch, i, ulistsize;
struct utmpx *u, *ulist;
+ argc = xo_parse_args(argc, argv);
+ if (argc < 0)
+ exit(1);
+
while ((ch = getopt(argc, argv, "f:rt")) != -1) {
switch (ch) {
case 'f':
@@ -97,13 +104,16 @@ main(int argc, char *argv[])
argc -= optind;
argv += optind;
+ xo_open_container("lastlogin-information");
+ xo_open_list("lastlogin");
+
if (argc > 0) {
/* Process usernames given on the command line. */
for (i = 0; i < argc; i++) {
if (setutxdb(UTXDB_LASTLOGIN, file) != 0)
- err(1, "failed to open lastlog database");
+ xo_err(1, "failed to open lastlog database");
if ((u = getutxuser(argv[i])) == NULL) {
- warnx("user '%s' not found", argv[i]);
+ xo_warnx("user '%s' not found", argv[i]);
continue;
}
output(u);
@@ -112,7 +122,7 @@ main(int argc, char *argv[])
} else {
/* Read all lastlog entries, looking for active ones. */
if (setutxdb(UTXDB_LASTLOGIN, file) != 0)
- err(1, "failed to open lastlog database");
+ xo_err(1, "failed to open lastlog database");
ulist = NULL;
ulistsize = 0;
while ((u = getutxent()) != NULL) {
@@ -122,7 +132,7 @@ main(int argc, char *argv[])
ulist = realloc(ulist,
(ulistsize + 16) * sizeof(struct utmpx));
if (ulist == NULL)
- err(1, "malloc");
+ xo_err(1, "malloc");
}
ulist[ulistsize++] = *u;
}
@@ -133,6 +143,10 @@ main(int argc, char *argv[])
output(&ulist[i]);
}
+ xo_close_list("lastlogin");
+ xo_close_container("lastlogin-information");
+ xo_finish();
+
exit(0);
}
@@ -142,13 +156,18 @@ output(struct utmpx *u)
{
time_t t = u->ut_tv.tv_sec;
- printf("%-10s %-8s %-22.22s %s",
- u->ut_user, u->ut_line, u->ut_host, ctime(&t));
+ xo_open_instance("lastlogin");
+ xo_emit("{:user/%-10s/%s} {:tty/%-8s/%s} {:from/%-22.22s/%s}",
+ u->ut_user, u->ut_line, u->ut_host);
+ xo_attr("seconds", "%lu", (unsigned long)t);
+ xo_emit(" {:login-time/%.24s/%.24s}\n", ctime(&t));
+ xo_close_instance("lastlogin");
}
static void
usage(void)
{
- fprintf(stderr, "usage: lastlogin [-f file] [-rt] [user ...]\n");
+ xo_error("usage: lastlogin [-f file] [-rt] [user ...]\n");
+ xo_finish();
exit(1);
}
More information about the svn-src-all
mailing list