#include <stdio.h>
#include <string.h>
#include <hesiod.h>

char *filsys_to_dir(char *);

main(int ac, char *av[]){
	char *s;
	printf("%s\n", (s=filsys_to_dir(av[1]))?s:"(null)");
}

/* This code stolen pretty much verbatim out of tcsh-6.04 */
char *
filsys_to_dir(char *name){
    char **res, **res1, *cp, *rp;

    res = hes_resolve(name, "filsys");
    rp = 0;
    if (res != 0) {
        extern char *strtok();
        if ((*res) != 0) {
            /*
             * Look at the first token to determine how to interpret
             * the rest of it.
             * Yes, strtok is evil (it's not thread-safe), but it's also
             * easy to use.
             */
            cp = strtok(*res, " ");
            if (strcmp(cp, "AFS") == 0) {
                /* next token is AFS pathname.. */
                cp = strtok(NULL, " ");
                if (cp != NULL)
                    rp = strdup(cp);
            } else if (strcmp(cp, "NFS") == 0) {
                cp = NULL;
                if ((strtok(NULL, " ")) && /* skip remote pathname */
                    (strtok(NULL, " ")) && /* skip host */
                    (strtok(NULL, " ")) && /* skip mode */
                    (cp = strtok(NULL, " "))) {
                    rp = strdup(cp);
                }
            }
        }
        for (res1 = res; *res1; res1++)
            free(*res1);
        return rp;
    }
    return NULL;
}
