From 95f53957e3dcce2544fd03ca3b314f2bbb6f5b2a Mon Sep 17 00:00:00 2001 From: Manuel Novoa III Date: Thu, 6 Nov 2003 20:56:04 +0000 Subject: Rewrite the pwd.h, grp.h, and shadow.h functions (except lckpwdf/ulckpwdf). --- libc/pwd_grp/getpwuid.c | 77 ------------------------------------------------- 1 file changed, 77 deletions(-) delete mode 100644 libc/pwd_grp/getpwuid.c (limited to 'libc/pwd_grp/getpwuid.c') diff --git a/libc/pwd_grp/getpwuid.c b/libc/pwd_grp/getpwuid.c deleted file mode 100644 index 5ec890647..000000000 --- a/libc/pwd_grp/getpwuid.c +++ /dev/null @@ -1,77 +0,0 @@ -/* vi: set sw=4 ts=4: */ -/* - * getpwuid.c - This file is part of the libc-8086/pwd package for ELKS, - * Copyright (C) 1995, 1996 Nat Friedman . - * Copyright (C) 2001-2003 Erik Andersen - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This 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 - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the Free - * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - * - */ - -#include -#include -#include -#include -#include -#include -#include "config.h" - -#ifdef __UCLIBC_HAS_THREADS__ -#include -static pthread_mutex_t mylock = PTHREAD_MUTEX_INITIALIZER; -# define LOCK pthread_mutex_lock(&mylock) -# define UNLOCK pthread_mutex_unlock(&mylock); -#else -# define LOCK -# define UNLOCK -#endif - -int getpwuid_r (uid_t uid, struct passwd *password, - char *buff, size_t buflen, struct passwd **result) -{ - int passwd_fd; - if ((passwd_fd = open(_PATH_PASSWD, O_RDONLY)) < 0) - return errno; - - *result = NULL; - while (__getpwent_r(password, buff, buflen, passwd_fd) == 0) { - if (password->pw_uid == uid) { - close(passwd_fd); - *result = password; - return 0; - } - } - - close(passwd_fd); - return EINVAL; -} - -struct passwd *getpwuid(uid_t uid) -{ - int ret; - struct passwd *result; - static struct passwd pwd; - static char line_buff[PWD_BUFFER_SIZE]; - - LOCK; - if ((ret=getpwuid_r(uid, &pwd, line_buff, sizeof(line_buff), &result)) == 0) { - UNLOCK; - return &pwd; - } - UNLOCK; - __set_errno(ret); - return NULL; -} - -- cgit v1.2.3