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