1*3e12c5d1SDavid du Colombier #include <stddef.h> 2*3e12c5d1SDavid du Colombier #include <pwd.h> 3*3e12c5d1SDavid du Colombier #include <string.h> 4*3e12c5d1SDavid du Colombier 5*3e12c5d1SDavid du Colombier extern int _getpw(int *, char **, char **); 6*3e12c5d1SDavid du Colombier 7*3e12c5d1SDavid du Colombier static struct passwd holdpw; 8*3e12c5d1SDavid du Colombier static char dirbuf[40] = "/usr/"; 9*3e12c5d1SDavid du Colombier static char *rc = "/bin/rc"; 10*3e12c5d1SDavid du Colombier 11*3e12c5d1SDavid du Colombier struct passwd * getpwuid(uid_t uid)12*3e12c5d1SDavid du Colombiergetpwuid(uid_t uid) 13*3e12c5d1SDavid du Colombier { 14*3e12c5d1SDavid du Colombier int num; 15*3e12c5d1SDavid du Colombier char *nam, *mem; 16*3e12c5d1SDavid du Colombier 17*3e12c5d1SDavid du Colombier num = uid; 18*3e12c5d1SDavid du Colombier nam = 0; 19*3e12c5d1SDavid du Colombier mem = 0; 20*3e12c5d1SDavid du Colombier if(_getpw(&num, &nam, &mem)){ 21*3e12c5d1SDavid du Colombier holdpw.pw_name = nam; 22*3e12c5d1SDavid du Colombier holdpw.pw_uid = num; 23*3e12c5d1SDavid du Colombier holdpw.pw_gid = num; 24*3e12c5d1SDavid du Colombier strncpy(dirbuf+5, nam, sizeof(dirbuf)-6); 25*3e12c5d1SDavid du Colombier holdpw.pw_dir = dirbuf; 26*3e12c5d1SDavid du Colombier holdpw.pw_shell = rc; 27*3e12c5d1SDavid du Colombier return &holdpw; 28*3e12c5d1SDavid du Colombier } 29*3e12c5d1SDavid du Colombier return NULL; 30*3e12c5d1SDavid du Colombier } 31