commit 09c279285ac44ada82c792d88fb246fd98a14e03
Author:     FRIGN <[email protected]>
AuthorDate: Mon Dec 14 10:55:25 2015 +0100
Commit:     sin <[email protected]>
CommitDate: Mon Dec 14 10:14:07 2015 +0000

    Add whoami(1)
    
    including manpage and other stuff. This program is a no-brainer.
    This was inspired by an initial commit by [email protected]. Thanks!

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 <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>");
+}

Reply via email to