Remove who(1) from sbase

It now lives in ubase.
This commit is contained in:
sin 2014-02-14 15:04:43 +00:00
parent efbce07f94
commit 386aa62b94
3 changed files with 0 additions and 92 deletions

View File

@ -95,7 +95,6 @@ SRC = \
sha256sum.c\
sha512sum.c\
wc.c \
who.c \
xargs.c \
yes.c

28
who.1
View File

@ -1,28 +0,0 @@
.TH WHO 1 sbase\-VERSION
.SH NAME
who \- print who has logged on
.SH SYNOPSIS
.B who
.RB [ -m ]
.SH DESCRIPTION
.B who
prints a list of who has logged on, their controlling tty, and the
time at which they logged on.
.SH OPTIONS
.TP
.B \-m
only show users on current tty
.TP
.B \-l
also print LOGIN processes
.SH BUGS
.B who
relies on the utmp file to be updated responsibly. This
doesn't always happen, which can cause who to print completely
bogus data.
.SH SEE ALSO
.IR utmp (5)

63
who.c
View File

@ -1,63 +0,0 @@
/* See LICENSE file for copyright and license details. */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <time.h>
#include <utmp.h>
#include "util.h"
static void
usage(void)
{
eprintf("usage: who [-ml]\n");
}
int
main(int argc, char **argv)
{
struct utmp usr;
FILE *ufp;
char timebuf[sizeof "yyyy-mm-dd hh:mm"];
char *tty, *ttmp;
int mflag = 0, lflag = 0;
time_t t;
ARGBEGIN {
case 'm':
mflag = 1;
tty = ttyname(STDIN_FILENO);
if (!tty)
eprintf("who: stdin:");
if ((ttmp = strrchr(tty, '/')))
tty = ttmp+1;
break;
case 'l':
lflag = 1;
break;
default:
usage();
} ARGEND;
if (argc > 0)
usage();
if (!(ufp = fopen("/var/run/utmp", "r")))
eprintf("who: '%s':", "/var/run/utmp");
while(fread(&usr, sizeof(usr), 1, ufp) == 1) {
if (!*usr.ut_name || !*usr.ut_line ||
usr.ut_line[0] == '~')
continue;
if (mflag && strcmp(usr.ut_line, tty))
continue;
if (strcmp(usr.ut_name, "LOGIN") == lflag)
continue;
t = usr.ut_time;
strftime(timebuf, sizeof timebuf, "%Y-%m-%d %H:%M", localtime(&t));
printf("%-8s %-12s %-16s\n", usr.ut_name, usr.ut_line, timebuf);
}
fclose(ufp);
return EXIT_SUCCESS;
}