1*37da2899SCharles.Forsyth #include <lib9.h>
2*37da2899SCharles.Forsyth
3*37da2899SCharles.Forsyth /*
4*37da2899SCharles.Forsyth * make an address, add the defaults
5*37da2899SCharles.Forsyth */
6*37da2899SCharles.Forsyth char *
netmkaddr(char * linear,char * defnet,char * defsrv)7*37da2899SCharles.Forsyth netmkaddr(char *linear, char *defnet, char *defsrv)
8*37da2899SCharles.Forsyth {
9*37da2899SCharles.Forsyth static char addr[4*(NAMELEN+1)];
10*37da2899SCharles.Forsyth char *cp;
11*37da2899SCharles.Forsyth
12*37da2899SCharles.Forsyth /*
13*37da2899SCharles.Forsyth * dump network name
14*37da2899SCharles.Forsyth */
15*37da2899SCharles.Forsyth cp = strchr(linear, '!');
16*37da2899SCharles.Forsyth if(cp == 0){
17*37da2899SCharles.Forsyth if(defnet==0){
18*37da2899SCharles.Forsyth if(defsrv)
19*37da2899SCharles.Forsyth sprint(addr, "net!%.*s!%.*s", 2*NAMELEN, linear,
20*37da2899SCharles.Forsyth NAMELEN, defsrv);
21*37da2899SCharles.Forsyth else
22*37da2899SCharles.Forsyth sprint(addr, "net!%.*s", 2*NAMELEN, linear);
23*37da2899SCharles.Forsyth } else {
24*37da2899SCharles.Forsyth if(defsrv)
25*37da2899SCharles.Forsyth sprint(addr, "%.*s!%.*s!%.*s", NAMELEN, defnet,
26*37da2899SCharles.Forsyth 2*NAMELEN, linear, NAMELEN, defsrv);
27*37da2899SCharles.Forsyth else
28*37da2899SCharles.Forsyth sprint(addr, "%.*s!%.*s", NAMELEN, defnet,
29*37da2899SCharles.Forsyth 2*NAMELEN, linear);
30*37da2899SCharles.Forsyth }
31*37da2899SCharles.Forsyth return addr;
32*37da2899SCharles.Forsyth }
33*37da2899SCharles.Forsyth
34*37da2899SCharles.Forsyth /*
35*37da2899SCharles.Forsyth * if there is already a service, use it
36*37da2899SCharles.Forsyth */
37*37da2899SCharles.Forsyth cp = strchr(cp+1, '!');
38*37da2899SCharles.Forsyth if(cp)
39*37da2899SCharles.Forsyth return linear;
40*37da2899SCharles.Forsyth
41*37da2899SCharles.Forsyth /*
42*37da2899SCharles.Forsyth * add default service
43*37da2899SCharles.Forsyth */
44*37da2899SCharles.Forsyth if(defsrv == 0)
45*37da2899SCharles.Forsyth return linear;
46*37da2899SCharles.Forsyth sprint(addr, "%.*s!%.*s", 3*NAMELEN, linear,
47*37da2899SCharles.Forsyth NAMELEN, defsrv);
48*37da2899SCharles.Forsyth
49*37da2899SCharles.Forsyth return addr;
50*37da2899SCharles.Forsyth }
51