CTRACE((tfp, "HTnameOfFile_WWW(%s,%d,%d) = %s\n", name, WWW_prefix, expand_all, result));
PUBLIC char * HTnameOfFile_WWW ARGS3(	CONST char *,	name,	BOOL,		WWW_prefix,	BOOL,		expand_all){    char * acc_method = HTParse(name, "", PARSE_ACCESS);    char * host = HTParse(name, "", PARSE_HOST);    char * path = HTParse(name, "", PARSE_PATH+PARSE_PUNCTUATION);    char * home;    char * result = NULL;    if (expand_all)	HTUnEscape(path);		/* Interpret all % signs */    else	HTUnEscapeSome(path, "/");	/* Interpret % signs for path delims */    if (0 == strcmp(acc_method, "file")	/* local file */     || !*acc_method) {			/* implicitly local? */	if ((0 == strcasecomp(host, HTHostName())) ||	    (0 == strcasecomp(host, "localhost")) || !*host) {	    CTRACE(tfp, "Node `%s' means path `%s'\n", name, path);#ifdef DOSPATH	    StrAllocCopy(result, HTDOS_name(path));#else#ifdef __EMX__	    if (path[0] == '/'	     && isalpha(path[1])	     && path[2] == ':') /* pesky leading slash */		StrAllocCopy(result, path+1);	    else		StrAllocCopy(result, path);	    CTRACE(tfp, "EMX hack changed `%s' to `%s'\n", path, result);#else	    StrAllocCopy(result, path);#endif /* __EMX__ */#endif /* DOSPATH */	} else if (WWW_prefix) {	    HTSprintf0(&result, "%s%s%s", "/Net/", host, path);	    CTRACE(tfp, "Node `%s' means file `%s'\n", name, result);	} else {	    StrAllocCopy(result, path);	}    } else if (WWW_prefix) {  /* other access */#ifdef VMS	if ((home = getenv("HOME")) == 0)	    home = HTCacheRoot;	else	    home = HTVMS_wwwName(home);#else	if ((home = getenv("HOME")) == 0)	    home = "/tmp";#endif /* VMS */	HTSprintf0(&result, "%s/WWW/%s/%s%s", home, acc_method, host, path);    } else {	StrAllocCopy(result, path);    }    FREE(host);    FREE(path);    FREE(acc_method);    return result;}