From 09c279285ac44ada82c792d88fb246fd98a14e03 Mon Sep 17 00:00:00 2001 From: FRIGN Date: Mon, 14 Dec 2015 10:55:25 +0100 Subject: [PATCH] Add whoami(1) including manpage and other stuff. This program is a no-brainer. This was inspired by an initial commit by e@bestmx.net. Thanks! --- Makefile | 1 + README | 1 + whoami.1 | 9 +++++++++ whoami.c | 37 +++++++++++++++++++++++++++++++++++++ 4 files changed, 48 insertions(+) create mode 100644 whoami.1 create mode 100644 whoami.c diff --git a/Makefile b/Makefile index c2d8266..0c73d68 100644 --- a/Makefile +++ b/Makefile @@ -157,6 +157,7 @@ BIN =\ uuencode\ wc\ which\ + whoami\ xargs\ yes diff --git a/README b/README index 86287b7..aff0644 100644 --- a/README +++ b/README @@ -95,6 +95,7 @@ The following tools are implemented: =*|o uuencode . #*|o wc . =*|x which . +=*|x whoami . =*|o xargs (-p) =*|x yes . diff --git a/whoami.1 b/whoami.1 new file mode 100644 index 0000000..535c927 --- /dev/null +++ b/whoami.1 @@ -0,0 +1,9 @@ +.Dd 2015-12-14 +.Dt WHOAMI 1 +.Os sbase +.Sh NAME +.Nm whoami +.Nd show effective uid +.Sh SYNOPSIS +.Nm +writes the name of the effective uid to stdout. diff --git a/whoami.c b/whoami.c new file mode 100644 index 0000000..4d88aea --- /dev/null +++ b/whoami.c @@ -0,0 +1,37 @@ +/* See LICENSE file for copyright and license details. */ +#include +#include +#include +#include + +#include "util.h" + +static void +usage (void) +{ + eprintf("usage: %s\n", argv0); +} + +int +main (int argc, char *argv[]) +{ + uid_t uid; + struct passwd *pw; + + argv0 = argv[0], argc--, argv++; + + if (argc) + usage(); + + uid = geteuid(); + errno = 0; + if (!(pw = getpwuid(uid))) { + if (errno) + eprintf("getpwuid %d:", uid); + else + eprintf("getpwuid %d: no such user\n", uid); + } + puts(pw->pw_name); + + return fshut(stdout, ""); +}