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>
6 fd04aace 2003-11-23 devnull * make an address, add the defaults
9 fd04aace 2003-11-23 devnull netmkaddr(char *linear, char *defnet, char *defsrv)
11 fd04aace 2003-11-23 devnull static char addr[256];
12 fd04aace 2003-11-23 devnull char *cp;
15 fd04aace 2003-11-23 devnull * dump network name
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;
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;
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);
37 6215fd56 2006-07-23 devnull snprint(addr, sizeof(addr), "%s!%s", defnet, linear);
38 fd04aace 2003-11-23 devnull return addr;
42 fd04aace 2003-11-23 devnull * if there is already a service, use it
44 fd04aace 2003-11-23 devnull cp = strchr(cp+1, '!');
46 fd04aace 2003-11-23 devnull return linear;
49 fd04aace 2003-11-23 devnull * add default service
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);
55 fd04aace 2003-11-23 devnull return addr;