jfb2 writes in Bug 119:
[oweals/busybox.git] / coreutils / whoami.c
index 3677c2fbcb0aed8e97da8c52fcbf83508e995713..6a6e2eec9a995f2da6893dd9aa3ca4f3441104e1 100644 (file)
  *
  */
 
-#include "internal.h"
-#include <stdio.h>
-#include <pwd.h>
-
-static const char whoami_usage[] = "whoami\n\n"
-       "Print the user name associated with the current effective user id.\n"
+/* BB_AUDIT SUSv3 N/A -- Matches GNU behavior. */
 
-       "Same as id -un.\n";
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include "busybox.h"
 
 extern int whoami_main(int argc, char **argv)
 {
-       struct passwd *pw;
-       uid_t uid;
-
        if (argc > 1)
-               usage(whoami_usage);
+               bb_show_usage();
 
-       uid = geteuid();
-       pw = getpwuid(uid);
-       if (pw) {
-               puts(pw->pw_name);
-               exit(TRUE);
-       }
-       fprintf(stderr, "%s: cannot find username for UID %u\n", argv[0],
-                       (unsigned) uid);
-       exit(FALSE);
+       puts(my_getpwuid(NULL, geteuid(), -1));
+       /* exits on error */
+       bb_fflush_stdout_and_exit(EXIT_SUCCESS);
 }