Blame


1 fd04aace 2003-11-23 devnull #include <u.h>
2 fd04aace 2003-11-23 devnull #include <libc.h>
3 fd04aace 2003-11-23 devnull #include <ctype.h>
4 fd04aace 2003-11-23 devnull
5 fd04aace 2003-11-23 devnull /*
6 fd04aace 2003-11-23 devnull * make an address, add the defaults
7 fd04aace 2003-11-23 devnull */
8 fd04aace 2003-11-23 devnull char *
9 fd04aace 2003-11-23 devnull netmkaddr(char *linear, char *defnet, char *defsrv)
10 fd04aace 2003-11-23 devnull {
11 fd04aace 2003-11-23 devnull static char addr[256];
12 fd04aace 2003-11-23 devnull char *cp;
13 fd04aace 2003-11-23 devnull
14 fd04aace 2003-11-23 devnull /*
15 fd04aace 2003-11-23 devnull * dump network name
16 fd04aace 2003-11-23 devnull */
17 fd04aace 2003-11-23 devnull cp = strchr(linear, '!');
18 fd04aace 2003-11-23 devnull if(cp == 0){
19 6215fd56 2006-07-23 devnull if(defnet == 0)
20 6215fd56 2006-07-23 devnull defnet = "net";
21 6215fd56 2006-07-23 devnull /* allow unix sockets to omit unix! prefix */
22 6215fd56 2006-07-23 devnull if(access(linear, 0) >= 0){
23 6215fd56 2006-07-23 devnull snprint(addr, sizeof(addr), "unix!%s", linear);
24 6215fd56 2006-07-23 devnull return addr;
25 fd04aace 2003-11-23 devnull }
26 6215fd56 2006-07-23 devnull /* allow host:service in deference to Unix convention */
27 6215fd56 2006-07-23 devnull if((cp = strchr(linear, ':')) != nil){
28 6215fd56 2006-07-23 devnull snprint(addr, sizeof(addr), "%s!%.*s!%s",
29 6215fd56 2006-07-23 devnull defnet, utfnlen(linear, cp-linear),
30 6215fd56 2006-07-23 devnull linear, cp+1);
31 6215fd56 2006-07-23 devnull return addr;
32 fd04aace 2003-11-23 devnull }
33 6215fd56 2006-07-23 devnull if(defsrv)
34 6215fd56 2006-07-23 devnull snprint(addr, sizeof(addr), "%s!%s!%s",
35 6215fd56 2006-07-23 devnull defnet, linear, defsrv);
36 6215fd56 2006-07-23 devnull else
37 6215fd56 2006-07-23 devnull snprint(addr, sizeof(addr), "%s!%s", defnet, linear);
38 fd04aace 2003-11-23 devnull return addr;
39 fd04aace 2003-11-23 devnull }
40 fd04aace 2003-11-23 devnull
41 fd04aace 2003-11-23 devnull /*
42 fd04aace 2003-11-23 devnull * if there is already a service, use it
43 fd04aace 2003-11-23 devnull */
44 fd04aace 2003-11-23 devnull cp = strchr(cp+1, '!');
45 fd04aace 2003-11-23 devnull if(cp)
46 fd04aace 2003-11-23 devnull return linear;
47 fd04aace 2003-11-23 devnull
48 fd04aace 2003-11-23 devnull /*
49 fd04aace 2003-11-23 devnull * add default service
50 fd04aace 2003-11-23 devnull */
51 fd04aace 2003-11-23 devnull if(defsrv == 0)
52 fd04aace 2003-11-23 devnull return linear;
53 fd04aace 2003-11-23 devnull snprint(addr, sizeof(addr), "%s!%s", linear, defsrv);
54 fd04aace 2003-11-23 devnull
55 fd04aace 2003-11-23 devnull return addr;
56 fd04aace 2003-11-23 devnull }