diff options
Diffstat (limited to 'mit-pthreads/gen/getpwnamuid.c')
-rw-r--r-- | mit-pthreads/gen/getpwnamuid.c | 138 |
1 files changed, 0 insertions, 138 deletions
diff --git a/mit-pthreads/gen/getpwnamuid.c b/mit-pthreads/gen/getpwnamuid.c deleted file mode 100644 index 0e87081b7a9..00000000000 --- a/mit-pthreads/gen/getpwnamuid.c +++ /dev/null @@ -1,138 +0,0 @@ -/* - * Copyright (c) 1983 Regents of the University of California. - * All rights reserved. The Berkeley software License Agreement - * specifies the terms and conditions for redistribution. - */ - -#if defined(LIBC_SCCS) && !defined(lint) -static char sccsid[] = "@(#)getpwnamuid.c 5.3 (Berkeley) 12/21/87"; -#endif - -#include <stdio.h> -#include <pwd.h> -#include <sys/file.h> -#include "pwd_internal.h" - -/* - * The following are shared with getpwent.c - */ - -#ifdef DBM_PWD_SUPPORT -static struct passwd * -fetchpw(key) - datum key; -{ - char *cp, *tp; - pwf_context_t *_data; - - _data = _pw_get_data(); - if (!_data) - return 0; - if (key.dptr == 0) - return ((struct passwd *)NULL); - key = dbm_fetch(_data->pw_db, key); - if (key.dptr == 0) - return ((struct passwd *)NULL); - cp = key.dptr; - tp = _data->line; - -#define EXPAND(e) _data->passwd.e = tp; while (*tp++ = *cp++); - EXPAND(pw_name); - EXPAND(pw_passwd); - memcpy((char *)&_data->passwd.pw_uid, cp, sizeof (int)); - cp += sizeof (int); - memcpy((char *)&_data->passwd.pw_gid, cp, sizeof (int)); - cp += sizeof (int); - EXPAND(pw_gecos); - EXPAND(pw_dir); - EXPAND(pw_shell); - return (&_data->passwd); -} -#endif /* DBM_PWD_SUPPORT */ - -struct passwd * -getpwnam(nam) - const char *nam; -{ -#ifdef DBM_PWD_SUPPORT - datum key; -#endif - struct passwd *pw, *getpwent(); - pwf_context_t *_data; - - _data = _pw_get_data(); - if (!_data) - return 0; - -#ifdef DBM_PWD_SUPPORT - if (_data->pw_db == (DBM *)0 && - (_data->pw_db = dbm_open(_data->pw_file, O_RDONLY)) == (DBM *)0) { - oldcode: -#endif - setpwent(); - while ((pw = getpwent()) && strcmp(nam, pw->pw_name)) - ; - if (!_data->pw_stayopen) - endpwent(); - return (pw); -#ifdef DBM_PWD_SUPPORT - } - if (flock(dbm_dirfno(_data->pw_db), LOCK_SH) < 0) { - dbm_close(_data->pw_db); - _data->pw_db = (DBM *)0; - goto oldcode; - } - key.dptr = nam; - key.dsize = strlen(nam); - pw = fetchpw(key); - (void) flock(dbm_dirfno(_data->pw_db), LOCK_UN); - if (!_data->pw_stayopen) { - dbm_close(_data->pw_db); - _data->pw_db = (DBM *)0; - } - return (pw); -#endif -} - -struct passwd * -getpwuid(uid) - uid_t uid; -{ -#ifdef DBM_PWD_SUPPORT - datum key; -#endif - struct passwd *pw, *getpwent(); - pwf_context_t *_data; - - _data = _pw_get_data(); - if (!_data) - return 0; -#ifdef DBM_PWD_SUPPORT - if (_data->pw_db == (DBM *)0 && - (_data->pw_db = dbm_open(_data->pw_file, O_RDONLY)) == (DBM *)0) { - oldcode: -#endif - setpwent(); - while ((pw = getpwent()) && pw->pw_uid != uid) - ; - if (!_data->pw_stayopen) - endpwent(); - return (pw); -#ifdef DBM_PWD_SUPPORT - } - if (flock(dbm_dirfno(_data->pw_db), LOCK_SH) < 0) { - dbm_close(_data->pw_db); - _data->pw_db = (DBM *)0; - goto oldcode; - } - key.dptr = (char *) &uid; - key.dsize = sizeof uid; - pw = fetchpw(key); - (void) flock(dbm_dirfno(_data->pw_db), LOCK_UN); - if (!_data->pw_stayopen) { - dbm_close(_data->pw_db); - _data->pw_db = (DBM *)0; - } - return (pw); -#endif -} |