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