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

Reply via email to