xref: /plan9/sys/src/cmd/unix/drawterm/libc/netmkaddr.c (revision 8ccd4a6360d974db7bd7bbd4f37e7018419ea908)
1 #include <u.h>
2 #include <libc.h>
3 #include <ctype.h>
4 
5 /*
6  *  make an address, add the defaults
7  */
8 char *
netmkaddr(char * linear,char * defnet,char * defsrv)9 netmkaddr(char *linear, char *defnet, char *defsrv)
10 {
11 	static char addr[256];
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 				snprint(addr, sizeof(addr), "net!%s!%s",
22 					linear, defsrv);
23 			else
24 				snprint(addr, sizeof(addr), "net!%s", linear);
25 		}
26 		else {
27 			if(defsrv)
28 				snprint(addr, sizeof(addr), "%s!%s!%s", defnet,
29 					linear, defsrv);
30 			else
31 				snprint(addr, sizeof(addr), "%s!%s", defnet,
32 					linear);
33 		}
34 		return addr;
35 	}
36 
37 	/*
38 	 *  if there is already a service, use it
39 	 */
40 	cp = strchr(cp+1, '!');
41 	if(cp)
42 		return linear;
43 
44 	/*
45 	 *  add default service
46 	 */
47 	if(defsrv == 0)
48 		return linear;
49 	snprint(addr, sizeof(addr), "%s!%s", linear, defsrv);
50 
51 	return addr;
52 }
53