Move start_stop_daemon to debianutils.
[oweals/busybox.git] / coreutils / logname.c
index 182f40ed2b959e55ca446c86011157141f401f3b..9cedff027663be60506e42d1ee9269386c5a0e44 100644 (file)
  *
  */
 
-#include "internal.h"
-#include <stdio.h>
+/* BB_AUDIT SUSv3 compliant */
+/* http://www.opengroup.org/onlinepubs/007904975/utilities/logname.html */
 
-static const char logname_usage[] = "logname\n\n"
+/* 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.
+ */
 
-       "Print the name of the current user.\n";
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include "busybox.h"
 
 extern int logname_main(int argc, char **argv)
 {
-       char *cp;
+       const char *p;
 
-       if (argc > 1)
-               usage(logname_usage);
+       if (argc > 1) {
+               bb_show_usage();
+       }
 
-       cp = getlogin();
-       if (cp) {
-               puts(cp);
-               exit(TRUE);
+       if ((p = getlogin()) != NULL) {
+               puts(p);
+               bb_fflush_stdout_and_exit(EXIT_SUCCESS);
        }
-       fprintf(stderr, "%s: no login name\n", argv[0]);
-       exit(FALSE);
+
+       bb_perror_msg_and_die("getlogin");
 }