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[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