+/* vi: set sw=4 ts=4: */
/*
* Mini logname implementation for busybox
*
*
*/
-#include "internal.h"
+/* BB_AUDIT SUSv3 compliant */
+/* http://www.opengroup.org/onlinepubs/007904975/utilities/logname.html */
+
+/* Mar 16, 2003 Manuel Novoa III (mjn3@codepoet.org)
+ *
+ * SUSv3 specifies the string used is that returned from getlogin().
+ * The previous implementation used getpwuid() for geteuid(), which
+ * is _not_ the same. Erik apparently made this change almost 3 years
+ * ago to avoid failing when no utmp was available. However, the
+ * correct course of action wrt SUSv3 for a failing getlogin() is
+ * a dianostic message and an error return.
+ */
+
#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include "busybox.h"
-static const char logname_usage[] = "logname\n\n"
-"Print the name of the current user.\n";
+extern int logname_main(int argc, char **argv)
+{
+ const char *p;
-extern int logname_main(int argc, char **argv) {
- char *cp;
+ if (argc > 1) {
+ bb_show_usage();
+ }
- if (argc > 1) usage (logname_usage);
+ if ((p = getlogin()) != NULL) {
+ puts(p);
+ bb_fflush_stdout_and_exit(EXIT_SUCCESS);
+ }
- cp = getlogin ();
- if (cp) {
- puts (cp);
- exit (TRUE);
- }
- fprintf (stderr, "%s: no login name\n", argv[0]);
- exit (FALSE);
+ bb_perror_msg_and_die("getlogin");
}