1*7dd7cddfSDavid du Colombier #include "all.h"
2*7dd7cddfSDavid du Colombier
3*7dd7cddfSDavid du Colombier void mapinit(char*, char*);
4*7dd7cddfSDavid du Colombier
5*7dd7cddfSDavid du Colombier int debug;
6*7dd7cddfSDavid du Colombier int rpcdebug;
7*7dd7cddfSDavid du Colombier int style = 'u';
8*7dd7cddfSDavid du Colombier Biobuf *in;
9*7dd7cddfSDavid du Colombier Unixid *ids;
10*7dd7cddfSDavid du Colombier Unixid **pids;
11*7dd7cddfSDavid du Colombier Unixidmap *mp;
12*7dd7cddfSDavid du Colombier
13*7dd7cddfSDavid du Colombier void
main(int argc,char ** argv)14*7dd7cddfSDavid du Colombier main(int argc, char **argv)
15*7dd7cddfSDavid du Colombier {
16*7dd7cddfSDavid du Colombier int id, arc; char *arv[4];
17*7dd7cddfSDavid du Colombier char *l, *name;
18*7dd7cddfSDavid du Colombier
19*7dd7cddfSDavid du Colombier chatty = 1;
20*7dd7cddfSDavid du Colombier ARGBEGIN{
21*7dd7cddfSDavid du Colombier case '9':
22*7dd7cddfSDavid du Colombier case 'u':
23*7dd7cddfSDavid du Colombier style = ARGC();
24*7dd7cddfSDavid du Colombier break;
25*7dd7cddfSDavid du Colombier case 'D':
26*7dd7cddfSDavid du Colombier ++debug;
27*7dd7cddfSDavid du Colombier break;
28*7dd7cddfSDavid du Colombier }ARGEND
29*7dd7cddfSDavid du Colombier if(argc <= 0){
30*7dd7cddfSDavid du Colombier ids = readunixids("/fd/0", style);
31*7dd7cddfSDavid du Colombier if(ids)
32*7dd7cddfSDavid du Colombier idprint(1, ids);
33*7dd7cddfSDavid du Colombier exits(ids ? 0 : "readunixids");
34*7dd7cddfSDavid du Colombier }
35*7dd7cddfSDavid du Colombier mapinit(argv[0], 0);
36*7dd7cddfSDavid du Colombier in = Bopen("/fd/0", OREAD);
37*7dd7cddfSDavid du Colombier while(l = Brdline(in, '\n')){ /* assign = */
38*7dd7cddfSDavid du Colombier l[Blinelen(in)-1] = 0;
39*7dd7cddfSDavid du Colombier arc = strparse(l, nelem(arv), arv);
40*7dd7cddfSDavid du Colombier if(arc <= 0)
41*7dd7cddfSDavid du Colombier continue;
42*7dd7cddfSDavid du Colombier switch(arv[0][0]){
43*7dd7cddfSDavid du Colombier case 'r':
44*7dd7cddfSDavid du Colombier if(arc < 2)
45*7dd7cddfSDavid du Colombier continue;
46*7dd7cddfSDavid du Colombier mapinit(arv[1], arv[2]);
47*7dd7cddfSDavid du Colombier break;
48*7dd7cddfSDavid du Colombier case 'i':
49*7dd7cddfSDavid du Colombier if(arc < 2)
50*7dd7cddfSDavid du Colombier continue;
51*7dd7cddfSDavid du Colombier id = strtol(arv[1], 0, 10);
52*7dd7cddfSDavid du Colombier name = id2name(pids, id);
53*7dd7cddfSDavid du Colombier print("%d -> %s\n", id, name);
54*7dd7cddfSDavid du Colombier break;
55*7dd7cddfSDavid du Colombier case 'n':
56*7dd7cddfSDavid du Colombier if(arc < 2)
57*7dd7cddfSDavid du Colombier continue;
58*7dd7cddfSDavid du Colombier name = arv[1];
59*7dd7cddfSDavid du Colombier id = name2id(pids, name);
60*7dd7cddfSDavid du Colombier print("%s -> %d\n", name, id);
61*7dd7cddfSDavid du Colombier break;
62*7dd7cddfSDavid du Colombier case 'p':
63*7dd7cddfSDavid du Colombier print("server=%s, client=%s\n", mp->server, mp->client);
64*7dd7cddfSDavid du Colombier break;
65*7dd7cddfSDavid du Colombier case 'P':
66*7dd7cddfSDavid du Colombier idprint(1, *pids);
67*7dd7cddfSDavid du Colombier break;
68*7dd7cddfSDavid du Colombier case 'u':
69*7dd7cddfSDavid du Colombier pids = &mp->u.ids;
70*7dd7cddfSDavid du Colombier print("users...\n");
71*7dd7cddfSDavid du Colombier break;
72*7dd7cddfSDavid du Colombier case 'g':
73*7dd7cddfSDavid du Colombier pids = &mp->g.ids;
74*7dd7cddfSDavid du Colombier print("groups...\n");
75*7dd7cddfSDavid du Colombier break;
76*7dd7cddfSDavid du Colombier }
77*7dd7cddfSDavid du Colombier }
78*7dd7cddfSDavid du Colombier exits(0);
79*7dd7cddfSDavid du Colombier }
80*7dd7cddfSDavid du Colombier
81*7dd7cddfSDavid du Colombier void
mapinit(char * file,char * client)82*7dd7cddfSDavid du Colombier mapinit(char *file, char *client)
83*7dd7cddfSDavid du Colombier {
84*7dd7cddfSDavid du Colombier if(file){
85*7dd7cddfSDavid du Colombier print("reading %s...\n", file);
86*7dd7cddfSDavid du Colombier if(readunixidmaps(file) < 0)
87*7dd7cddfSDavid du Colombier exits("readunixidmaps");
88*7dd7cddfSDavid du Colombier if(!client)
89*7dd7cddfSDavid du Colombier client = "nslocum.research.bell-labs.com";
90*7dd7cddfSDavid du Colombier }
91*7dd7cddfSDavid du Colombier print("client = %s...\n", client);
92*7dd7cddfSDavid du Colombier mp = pair2idmap("bootes", client, 0);
93*7dd7cddfSDavid du Colombier if(mp == 0){
94*7dd7cddfSDavid du Colombier fprint(2, "%s: pair2idmap failed\n", argv0);
95*7dd7cddfSDavid du Colombier exits("pair2idmap");
96*7dd7cddfSDavid du Colombier }
97*7dd7cddfSDavid du Colombier pids = &mp->u.ids;
98*7dd7cddfSDavid du Colombier print("[users...]\n");
99*7dd7cddfSDavid du Colombier }
100