diff options
Diffstat (limited to 'REORG.TODO/login/getutid_r.c')
-rw-r--r-- | REORG.TODO/login/getutid_r.c | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/REORG.TODO/login/getutid_r.c b/REORG.TODO/login/getutid_r.c new file mode 100644 index 0000000000..f82301322f --- /dev/null +++ b/REORG.TODO/login/getutid_r.c @@ -0,0 +1,62 @@ +/* Copyright (C) 1996-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@cygnus.com> + and Paul Janzen <pcj@primenet.com>, 1996. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#include <libc-lock.h> +#include <errno.h> +#include <stdlib.h> +#include <utmp.h> + +#include "utmp-private.h" + + +/* We have to use the lock in getutent_r.c. */ +__libc_lock_define (extern, __libc_utmp_lock attribute_hidden) + + +int +__getutid_r (const struct utmp *id, struct utmp *buffer, struct utmp **result) +{ +#if (_HAVE_UT_ID - 0) && (_HAVE_UT_TYPE - 0) + int retval; + + /* Test whether ID has any of the legal types. */ + if (id->ut_type != RUN_LVL && id->ut_type != BOOT_TIME + && id->ut_type != OLD_TIME && id->ut_type != NEW_TIME + && id->ut_type != INIT_PROCESS && id->ut_type != LOGIN_PROCESS + && id->ut_type != USER_PROCESS && id->ut_type != DEAD_PROCESS) + /* No, using '<' and '>' for the test is not possible. */ + { + __set_errno (EINVAL); + *result = NULL; + return -1; + } + + __libc_lock_lock (__libc_utmp_lock); + + retval = (*__libc_utmp_jump_table->getutid_r) (id, buffer, result); + + __libc_lock_unlock (__libc_utmp_lock); + + return retval; +#else /* !_HAVE_UT_ID && !_HAVE_UT_TYPE */ + __set_errno (ENOSYS); + return -1; +#endif +} +weak_alias (__getutid_r, getutid_r) |