|
|
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.