69339a3239e9643fbde81b7dd43bc2978a02e13e hiram Wed May 25 10:38:27 2011 -0700 changing uses of cgiServerName to better cgiServerNamePort diff --git src/lib/cheapcgi.c src/lib/cheapcgi.c index 8397f34..7723d44 100644 --- src/lib/cheapcgi.c +++ src/lib/cheapcgi.c @@ -63,45 +63,63 @@ } char *cgiRequestContentLength() /* Return HTTP REQUEST CONTENT_LENGTH if available*/ { return getenv("CONTENT_LENGTH"); } char *cgiScriptName() /* Return name of script so libs can do context-sensitive stuff. */ { return getenv("SCRIPT_NAME"); } char *cgiServerName() -/* Return name of server */ +/* Return name of server, better to use cgiServerNamePort() for + actual URL construction */ { return getenv("SERVER_NAME"); } char *cgiServerPort() -/* Return port number of server */ +/* Return port number of server, default 80 if not found */ { char *port = getenv("SERVER_PORT"); if (port) return port; else return "80"; } +char *cgiServerNamePort() +/* Return name of server with port if different than 80 */ +{ +char *port = cgiServerPort(); +char *namePort = cgiServerName(); +struct dyString *result = newDyString(256); +if (namePort) + { + dyStringPrintf(result,"%s",namePort); + if (differentString(port, "80")) + dyStringPrintf(result,":%s",port); + return dyStringCannibalize(&result); + } +else + return NULL; +} + char *cgiRemoteAddr() /* Return IP address of client (or "unknown"). */ { static char *dunno = "unknown"; char *remoteAddr = getenv("REMOTE_ADDR"); if (remoteAddr == NULL) remoteAddr = dunno; return remoteAddr; } char *cgiUserAgent() /* Return remote user agent (HTTP_USER_AGENT) or NULL if remote user agent is not known */ { return getenv("HTTP_USER_AGENT"); }