]> git.ipfire.org Git - thirdparty/glibc.git/blame - sysdeps/mach/hurd/getlogin_r.c
Update copyright dates with scripts/update-copyrights.
[thirdparty/glibc.git] / sysdeps / mach / hurd / getlogin_r.c
CommitLineData
ee188d55 1/* Reentrant function to return the current login name. Hurd version.
bfff8b1b 2 Copyright (C) 1996-2017 Free Software Foundation, Inc.
6d52618b 3 This file is part of the GNU C Library.
ee188d55 4
6d52618b 5 The GNU C Library is free software; you can redistribute it and/or
41bdb6e2
AJ
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
ee188d55 9
6d52618b
UD
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
41bdb6e2 13 Lesser General Public License for more details.
ee188d55 14
41bdb6e2 15 You should have received a copy of the GNU Lesser General Public
59ba27a6
PE
16 License along with the GNU C Library; if not, see
17 <http://www.gnu.org/licenses/>. */
ee188d55
RM
18
19#include <errno.h>
20#include <unistd.h>
21#include <hurd.h>
22#include <string.h>
23
24/* Return at most NAME_LEN characters of the login name of the user in NAME.
6d52618b 25 If it cannot be determined or some other error occurred, return the error
ee188d55
RM
26 code. Otherwise return 0. */
27int
bd2260a2 28__getlogin_r (char *name, size_t name_len)
ee188d55 29{
b3404dbd 30 string_t login;
ee188d55
RM
31 error_t err;
32
33 if (err = __USEPORT (PROC, __proc_getlogin (port, login)))
34 return errno = err;
35
b3404dbd
PT
36 size_t len = __strnlen (login, sizeof login - 1) + 1;
37 if (len > name_len)
38 {
39 errno = ERANGE;
40 return errno;
41 }
42
43 memcpy (name, login, len);
ee188d55
RM
44 return 0;
45}
5371d99e
JM
46libc_hidden_def (__getlogin_r)
47weak_alias (__getlogin_r, getlogin_r)
48libc_hidden_weak (getlogin_r)