1da2e3ebdSchin /*********************************************************************** 2da2e3ebdSchin * * 3da2e3ebdSchin * This software is part of the ast package * 4*7c2fbfb3SApril Chin * Copyright (c) 1992-2008 AT&T Intellectual Property * 5da2e3ebdSchin * and is licensed under the * 6da2e3ebdSchin * Common Public License, Version 1.0 * 7*7c2fbfb3SApril Chin * by AT&T Intellectual Property * 8da2e3ebdSchin * * 9da2e3ebdSchin * A copy of the License is available at * 10da2e3ebdSchin * http://www.opensource.org/licenses/cpl1.0.txt * 11da2e3ebdSchin * (with md5 checksum 059e8cd6165cb4c31e351f2b69388fd9) * 12da2e3ebdSchin * * 13da2e3ebdSchin * Information and Software Systems Research * 14da2e3ebdSchin * AT&T Research * 15da2e3ebdSchin * Florham Park NJ * 16da2e3ebdSchin * * 17da2e3ebdSchin * Glenn Fowler <gsf@research.att.com> * 18da2e3ebdSchin * David Korn <dgk@research.att.com> * 19da2e3ebdSchin * * 20da2e3ebdSchin ***********************************************************************/ 21da2e3ebdSchin #pragma prototyped 22da2e3ebdSchin /* 23da2e3ebdSchin * David Korn 24da2e3ebdSchin * AT&T Research 25da2e3ebdSchin * 26da2e3ebdSchin * logname 27da2e3ebdSchin */ 28da2e3ebdSchin 29da2e3ebdSchin static const char usage[] = 30da2e3ebdSchin "[-?\n@(#)$Id: logname (AT&T Research) 1999-04-30 $\n]" 31da2e3ebdSchin USAGE_LICENSE 32da2e3ebdSchin "[+NAME?logname - return the user's login name]" 33da2e3ebdSchin "[+DESCRIPTION?\blogname\b writes the users's login name to standard " 34da2e3ebdSchin "output. The login name is the string that is returned by the " 35da2e3ebdSchin "\bgetlogin\b(2) function. If \bgetlogin\b(2) does not return " 36da2e3ebdSchin "successfully, the corresponding to the real user id of the calling " 37da2e3ebdSchin "process is used instead.]" 38da2e3ebdSchin 39da2e3ebdSchin "\n" 40da2e3ebdSchin "\n\n" 41da2e3ebdSchin "\n" 42da2e3ebdSchin "[+EXIT STATUS?]{" 43da2e3ebdSchin "[+0?Successful Completion.]" 44da2e3ebdSchin "[+>0?An error occurred.]" 45da2e3ebdSchin "}" 46da2e3ebdSchin "[+SEE ALSO?\bgetlogin\b(2)]" 47da2e3ebdSchin ; 48da2e3ebdSchin 49da2e3ebdSchin 50da2e3ebdSchin #include <cmd.h> 51da2e3ebdSchin 52da2e3ebdSchin int 53da2e3ebdSchin b_logname(int argc, char** argv, void* context) 54da2e3ebdSchin { 55da2e3ebdSchin register char* logname; 56da2e3ebdSchin 57da2e3ebdSchin cmdinit(argc, argv, context, ERROR_CATALOG, 0); 58da2e3ebdSchin for (;;) 59da2e3ebdSchin { 60da2e3ebdSchin switch (optget(argv, usage)) 61da2e3ebdSchin { 62da2e3ebdSchin case ':': 63da2e3ebdSchin error(2, "%s", opt_info.arg); 64da2e3ebdSchin continue; 65da2e3ebdSchin case '?': 66da2e3ebdSchin error(ERROR_usage(2), "%s", opt_info.arg); 67da2e3ebdSchin continue; 68da2e3ebdSchin } 69da2e3ebdSchin break; 70da2e3ebdSchin } 71da2e3ebdSchin if (error_info.errors) 72da2e3ebdSchin error(ERROR_usage(2), "%s", optusage(NiL)); 73da2e3ebdSchin if (!(logname = getlogin())) 74da2e3ebdSchin logname = fmtuid(getuid()); 75da2e3ebdSchin sfputr(sfstdout, logname, '\n'); 76da2e3ebdSchin return 0; 77da2e3ebdSchin } 78da2e3ebdSchin 79