#include "all.h"
void mapinit(char*, char*);
int debug;
int rpcdebug;
int style = 'u';
Biobuf *in;
Unixid *ids;
Unixid **pids;
Unixidmap *mp;
void
main(int argc, char **argv)
{
int id, arc; char *arv[4];
char *l, *name;
chatty = 1;
ARGBEGIN{
case '9':
case 'u':
style = ARGC();
break;
case 'D':
++debug;
break;
}ARGEND
if(argc <= 0){
ids = readunixids("/fd/0", style);
if(ids)
idprint(1, ids);
exits(ids ? 0 : "readunixids");
}
mapinit(argv[0], 0);
in = Bopen("/fd/0", OREAD);
while(l = Brdline(in, '\n')){ /* assign = */
l[Blinelen(in)-1] = 0;
arc = strparse(l, nelem(arv), arv);
if(arc <= 0)
continue;
switch(arv[0][0]){
case 'r':
if(arc < 2)
continue;
mapinit(arv[1], arv[2]);
break;
case 'i':
if(arc < 2)
continue;
id = strtol(arv[1], 0, 10);
name = id2name(pids, id);
print("%d -> %s\n", id, name);
break;
case 'n':
if(arc < 2)
continue;
name = arv[1];
id = name2id(pids, name);
print("%s -> %d\n", name, id);
break;
case 'p':
print("server=%s, client=%s\n", mp->server, mp->client);
break;
case 'P':
idprint(1, *pids);
break;
case 'u':
pids = &mp->u.ids;
print("users...\n");
break;
case 'g':
pids = &mp->g.ids;
print("groups...\n");
break;
}
}
exits(0);
}
void
mapinit(char *file, char *client)
{
if(file){
print("reading %s...\n", file);
if(readunixidmaps(file) < 0)
exits("readunixidmaps");
if(!client)
client = "nslocum.research.bell-labs.com";
}
print("client = %s...\n", client);
mp = pair2idmap("bootes", client, 0);
if(mp == 0){
fprint(2, "%s: pair2idmap failed\n", argv0);
exits("pair2idmap");
}
pids = &mp->u.ids;
print("[users...]\n");
}
|