sbase

suckless unix tools
git clone git://git.suckless.org/sbase
Log | Files | Refs | README | LICENSE

commit 09c279285ac44ada82c792d88fb246fd98a14e03
parent bb7427f6c1c95fc6b02ee90ca124dff50fcff9c5
Author: FRIGN <dev@frign.de>
Date:   Mon, 14 Dec 2015 10:55:25 +0100

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!

Diffstat:
MMakefile | 1+
MREADME | 1+
Awhoami.1 | 9+++++++++
Awhoami.c | 37+++++++++++++++++++++++++++++++++++++
4 files changed, 48 insertions(+), 0 deletions(-)

diff --git a/Makefile b/Makefile @@ -157,6 +157,7 @@ BIN =\ uuencode\ wc\ which\ + whoami\ xargs\ yes diff --git 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 @@ -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 @@ -0,0 +1,37 @@ +/* See LICENSE file for copyright and license details. */ +#include <errno.h> +#include <stdio.h> +#include <unistd.h> +#include <pwd.h> + +#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, "<stdout>"); +}