blob: c3d2538e22b2675f772492c338c1460515bc8d12 [file] [log] [blame]
Jari Aaltoccc6cda1996-12-23 17:02:34 +00001/* logname - print login name of current user */
2
Jari Aalto31859422009-01-12 13:36:28 +00003/*
4 Copyright (C) 1999-2009 Free Software Foundation, Inc.
5
6 This file is part of GNU Bash.
7 Bash is free software: you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation, either version 3 of the License, or
10 (at your option) any later version.
11
12 Bash is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
16
17 You should have received a copy of the GNU General Public License
18 along with Bash. If not, see <http://www.gnu.org/licenses/>.
19*/
20
Jari Aaltoccc6cda1996-12-23 17:02:34 +000021#include <config.h>
22
23#if defined (HAVE_UNISTD_H)
24# include <unistd.h>
25#endif
26
27#include <stdio.h>
28#include <errno.h>
29
30#include "builtins.h"
31#include "shell.h"
Jari Aalto31859422009-01-12 13:36:28 +000032#include "common.h"
Jari Aaltoccc6cda1996-12-23 17:02:34 +000033
34#if !defined (errno)
Ricardo Cerqueiraa02fbff2013-07-25 22:35:34 +010035#include <errno.h>
Jari Aaltoccc6cda1996-12-23 17:02:34 +000036#endif
37
38logname_builtin (list)
39 WORD_LIST *list;
40{
41 char *np;
42
43 if (no_options (list))
44 return (EX_USAGE);
45
46 np = getlogin ();
47 if (np == 0)
48 {
49 builtin_error ("cannot find username: %s", strerror (errno));
50 return (EXECUTION_FAILURE);
51 }
52 printf ("%s\n", np);
53 return (EXECUTION_SUCCESS);
54}
55
56char *logname_doc[] = {
Jari Aalto31859422009-01-12 13:36:28 +000057 "Display user login name.",
58 "",
59 "Write the current user's login name to the standard output",
Jari Aaltoccc6cda1996-12-23 17:02:34 +000060 "and exit. logname ignores the LOGNAME and USER variables.",
61 "logname ignores any non-option arguments.",
62 (char *)NULL
63};
64
65struct builtin logname_struct = {
66 "logname",
67 logname_builtin,
68 BUILTIN_ENABLED,
69 logname_doc,
70 "logname",
71 0
72};
73