113651Ssam #ifndef lint 2*23604Sbloom static char sccsid[] = "@(#)getpwinfo.c 5.3 (Berkeley) 06/19/85"; 313651Ssam #endif 413651Ssam 513651Ssam #include "uucp.h" 613651Ssam #include <pwd.h> 713651Ssam 8*23604Sbloom /*LINTLIBRARY*/ 9*23604Sbloom 10*23604Sbloom /* 11*23604Sbloom * get passwd file info for uid 1213651Ssam * 13*23604Sbloom * return codes: SUCCESS | FAIL 1413651Ssam * 1513651Ssam */ 1613651Ssam 1713651Ssam guinfo(uid, name, path) 1813651Ssam int uid; 1913651Ssam register char *path, *name; 2013651Ssam { 2113651Ssam register struct passwd *pwd; 2213651Ssam struct passwd *getpwuid(), *getpwnam(); 23*23604Sbloom char *getlogin(), *getenv(), *l; 2413651Ssam 25*23604Sbloom if ((l = getlogin()) == NULL) { 26*23604Sbloom l = getenv("USER"); 27*23604Sbloom } 28*23604Sbloom if (l != NULL) { 2913651Ssam pwd = getpwnam(l); 30*23604Sbloom if (pwd != NULL && pwd->pw_uid == uid) 3113651Ssam goto setup; 3213651Ssam } 3313651Ssam if ((pwd = getpwuid(uid)) == NULL) { 3413651Ssam /* can not find uid in passwd file */ 35*23604Sbloom *name = '\0'; 3613651Ssam *path = '\0'; 3717835Sralph return FAIL; 3813651Ssam } 3913651Ssam 4013651Ssam setup: 4113651Ssam strcpy(path, pwd->pw_dir); 4213651Ssam strcpy(name, pwd->pw_name); 4317835Sralph return SUCCESS; 4413651Ssam } 4513651Ssam 4613651Ssam 4717835Sralph /* 4817835Sralph * get passwd file info for name 4913651Ssam * 5017835Sralph * return codes: SUCCESS | FAIL 5113651Ssam */ 5213651Ssam 5313651Ssam gninfo(name, uid, path) 5413651Ssam char *path, *name; 5513651Ssam int *uid; 5613651Ssam { 5713651Ssam register struct passwd *pwd; 5813651Ssam struct passwd *getpwnam(); 5913651Ssam 6013651Ssam if ((pwd = getpwnam(name)) == NULL) { 6113651Ssam /* can not find name in passwd file */ 6213651Ssam *path = '\0'; 6317835Sralph return FAIL; 6413651Ssam } 6513651Ssam 6613651Ssam strcpy(path, pwd->pw_dir); 6713651Ssam *uid = pwd->pw_uid; 6817835Sralph return SUCCESS; 6913651Ssam } 70