> > Thanks, this finally looks like what I need.
>
> it won't work. something like the code i posted is needed.
I’m trying to read the limbo code and translate it to my needs; bear with me as
I translate this to c-ish pseudocode:
char*
gethostbyaddr(char *net, char *addr)
{
char buf[1024], *dq[4], s;
int fd, l;
if(net == nil)
net = "/net";
snprint(buf, sizeof buf, "%s/dns", net);
if((fd = open(buf, ORDWR)) < 0)
return nil; // set errstr "gethostbyaddr failed:
can't open %s: %r", buf)
dq[0] = strtok(addr, "."); // neglecting error checking
dq[1] = strtok(0, "."); dq[2] = strtok(0, "."); dq[3] = strtok(0, ".");
snprint(buf, sizeof buf, "%s.%s.%s.%s.in-addr.arpa ptr",
dq[3], dq[2], dq[1], dq[0]);
if(write(fd, buf, l) != l)
return nil; // close fd & set errstr
if(read(fd, buf, sizeof buf) < 0)
return nil;
s = strstr(buf, " ptr ");
return(strdup(s+5));
}
Well, it’s less pseudocode than a rough draft. If it passes rog’s sanity check
I’ll add better error checking and submit it for inclusion somewhere—someone,
somewhere, has got to want this.
--Joel