|
|
1.1 ! root 1: #include "ps.h" ! 2: #include <pwd.h> ! 3: ! 4: static List namelist; ! 5: static Entry *prev; ! 6: ! 7: char * ! 8: getuname(uid) ! 9: register uid; ! 10: { ! 11: register Entry *ep; ! 12: ! 13: if((ep = prev) && ep->e_val == uid) ! 14: return ep->e_name; ! 15: for(ep = namelist.begin; ep; ep = ep->next) { ! 16: if(ep->e_val == uid) { ! 17: prev = ep; ! 18: return ep->e_name; ! 19: } ! 20: } ! 21: return "?"; ! 22: } ! 23: ! 24: getlogins() ! 25: { ! 26: register Entry *ep; ! 27: register Entry *last; ! 28: register struct passwd *pp; ! 29: ! 30: last = NULL; ! 31: while(pp = getpwent()) { ! 32: if((ep = Malloc(Entry, 1)) == 0) ! 33: break; ! 34: if (last) ! 35: last->next = ep; ! 36: else ! 37: namelist.begin = ep; ! 38: ep->next = NULL; ! 39: last = ep; ! 40: namelist.nentry++; ! 41: ep->e_val = pp->pw_uid; ! 42: strncpy(ep->e_name, pp->pw_name, sizeof(ep->e_name)); ! 43: } ! 44: endpwent(); ! 45: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.