1/* vi: set sw=4 ts=4: */ 2/* 3 * Mini logname implementation for busybox 4 * 5 * Copyright (C) 2000 Edward Betts <edward@debian.org>. 6 * 7 * Licensed under GPLv2 or later, see file LICENSE in this tarball for details. 8 */ 9 10/* BB_AUDIT SUSv3 compliant */ 11/* http://www.opengroup.org/onlinepubs/007904975/utilities/logname.html */ 12 13/* Mar 16, 2003 Manuel Novoa III (mjn3@codepoet.org) 14 * 15 * SUSv3 specifies the string used is that returned from getlogin(). 16 * The previous implementation used getpwuid() for geteuid(), which 17 * is _not_ the same. Erik apparently made this change almost 3 years 18 * ago to avoid failing when no utmp was available. However, the 19 * correct course of action wrt SUSv3 for a failing getlogin() is 20 * a diagnostic message and an error return. 21 */ 22 23#include "libbb.h" 24 25/* This is a NOFORK applet. Be very careful! */ 26 27int logname_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; 28int logname_main(int argc UNUSED_PARAM, char **argv UNUSED_PARAM) 29{ 30 char buf[64]; 31 32 if (argv[1]) { 33 bb_show_usage(); 34 } 35 36 /* Using _r function - avoid pulling in static buffer from libc */ 37 if (getlogin_r(buf, sizeof(buf)) == 0) { 38 puts(buf); 39 return fflush_all(); 40 } 41 42 bb_perror_msg_and_die("getlogin"); 43} 44