experiment: translation from standard notations to plan 9 in netmkaddr

This commit is contained in:
rsc 2006-07-23 02:56:37 +00:00
parent 73a5509ae9
commit 6215fd56f1
3 changed files with 36 additions and 13 deletions

View file

@ -16,21 +16,25 @@ netmkaddr(char *linear, char *defnet, char *defsrv)
*/
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);
if(defnet == 0)
defnet = "net";
/* allow unix sockets to omit unix! prefix */
if(access(linear, 0) >= 0){
snprint(addr, sizeof(addr), "unix!%s", linear);
return addr;
}
else {
if(defsrv)
snprint(addr, sizeof(addr), "%s!%s!%s", defnet,
linear, defsrv);
else
snprint(addr, sizeof(addr), "%s!%s", defnet,
linear);
/* allow host:service in deference to Unix convention */
if((cp = strchr(linear, ':')) != nil){
snprint(addr, sizeof(addr), "%s!%.*s!%s",
defnet, utfnlen(linear, cp-linear),
linear, cp+1);
return addr;
}
if(defsrv)
snprint(addr, sizeof(addr), "%s!%s!%s",
defnet, linear, defsrv);
else
snprint(addr, sizeof(addr), "%s!%s", defnet, linear);
return addr;
}