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");
 }