xref: /csrg-svn/usr.bin/uucp/libuu/getpwinfo.c (revision 48652)
1*48652Sbostic /*-
2*48652Sbostic  * Copyright (c) 1985 The Regents of the University of California.
3*48652Sbostic  * All rights reserved.
4*48652Sbostic  *
5*48652Sbostic  * %sccs.include.proprietary.c%
6*48652Sbostic  */
7*48652Sbostic 
813651Ssam #ifndef lint
9*48652Sbostic static char sccsid[] = "@(#)getpwinfo.c	5.5 (Berkeley) 04/24/91";
10*48652Sbostic #endif /* not lint */
1113651Ssam 
1213651Ssam #include "uucp.h"
1313651Ssam #include <pwd.h>
1413651Ssam 
1523604Sbloom /*LINTLIBRARY*/
1623604Sbloom 
1723604Sbloom /*
1823604Sbloom  *	get passwd file info for uid
1913651Ssam  *
2023604Sbloom  *	return codes:  SUCCESS  |  FAIL
2113651Ssam  *
2213651Ssam  */
2313651Ssam 
2413651Ssam guinfo(uid, name, path)
2513651Ssam int uid;
2613651Ssam register char *path, *name;
2713651Ssam {
2813651Ssam 	register struct passwd *pwd;
2923604Sbloom 	char *getlogin(), *getenv(), *l;
3013651Ssam 
3123604Sbloom 	if ((l = getlogin()) == NULL) {
3223604Sbloom 		l = getenv("USER");
3323604Sbloom 	}
3423604Sbloom 	if (l != NULL) {
3513651Ssam 		pwd = getpwnam(l);
3623604Sbloom 		if (pwd != NULL && pwd->pw_uid == uid)
3713651Ssam 			goto setup;
3813651Ssam 	}
3913651Ssam 	if ((pwd = getpwuid(uid)) == NULL) {
4013651Ssam 		/* can not find uid in passwd file */
4123604Sbloom 		*name = '\0';
4213651Ssam 		*path = '\0';
4317835Sralph 		return FAIL;
4413651Ssam 	}
4513651Ssam 
4613651Ssam     setup:
4713651Ssam 	strcpy(path, pwd->pw_dir);
4813651Ssam 	strcpy(name, pwd->pw_name);
4917835Sralph 	return SUCCESS;
5013651Ssam }
5113651Ssam 
5213651Ssam 
5317835Sralph /*
5417835Sralph  *	get passwd file info for name
5513651Ssam  *
5617835Sralph  *	return codes:  SUCCESS  |  FAIL
5713651Ssam  */
5813651Ssam 
5913651Ssam gninfo(name, uid, path)
6013651Ssam char *path, *name;
6113651Ssam int *uid;
6213651Ssam {
6313651Ssam 	register struct passwd *pwd;
6413651Ssam 	struct passwd *getpwnam();
6513651Ssam 
6613651Ssam 	if ((pwd = getpwnam(name)) == NULL) {
6713651Ssam 		/* can not find name in passwd file */
6813651Ssam 		*path = '\0';
6917835Sralph 		return FAIL;
7013651Ssam 	}
7113651Ssam 
7213651Ssam 	strcpy(path, pwd->pw_dir);
7313651Ssam 	*uid = pwd->pw_uid;
7417835Sralph 	return SUCCESS;
7513651Ssam }
76