| #include <u.h> |
| #include <libc.h> |
| #include <ctype.h> |
| |
| /* |
| * make an address, add the defaults |
| */ |
| char * |
| netmkaddr(char *linear, char *defnet, char *defsrv) |
| { |
| static char addr[256]; |
| char *cp; |
| |
| /* |
| * dump network name |
| */ |
| cp = strchr(linear, '!'); |
| if(cp == 0){ |
| if(defnet==0){ |
| if(defsrv) |
| snprint(addr, sizeof(addr), "net!%s!%s", |
| linear, defsrv); |
| else |
| snprint(addr, sizeof(addr), "net!%s", linear); |
| } |
| else { |
| if(defsrv) |
| snprint(addr, sizeof(addr), "%s!%s!%s", defnet, |
| linear, defsrv); |
| else |
| snprint(addr, sizeof(addr), "%s!%s", defnet, |
| linear); |
| } |
| return addr; |
| } |
| |
| /* |
| * if there is already a service, use it |
| */ |
| cp = strchr(cp+1, '!'); |
| if(cp) |
| return linear; |
| |
| /* |
| * add default service |
| */ |
| if(defsrv == 0) |
| return linear; |
| snprint(addr, sizeof(addr), "%s!%s", linear, defsrv); |
| |
| return addr; |
| } |