06038bf2b21046d17e6f1fced3648fd686609e1b
hiram
  Wed Jul 28 11:14:27 2010 -0700
initial contents for useCount
diff --git src/hg/useCount/useCount.c src/hg/useCount/useCount.c
new file mode 100644
index 0000000..2abb643
--- /dev/null
+++ src/hg/useCount/useCount.c
@@ -0,0 +1,62 @@
+/* useCount - a simple CGI that merely counts its references. */
+#include "common.h"
+#include "jksql.h"
+#include "cheapcgi.h"
+#include "hdb.h"
+
+static char const rcsid[] = "$Id: newProg.c,v 1.30 2010/03/24 21:18:33 hiram Exp $";
+
+/* table to use for counting in hgcentral */
+static char useCount[] = "useCount";
+
+int main(int argc, char *argv[])
+{
+int count = 0;
+cgiSpoof(&argc, argv);
+
+char *dateTime = NULL;
+char *remoteAddr = getenv("REMOTE_ADDR");
+char *userAgent = getenv("HTTP_USER_AGENT");
+char *version = cgiUsualString("version", "unknown");
+if (remoteAddr == NULL)
+    remoteAddr = "unknown";
+if (userAgent == NULL)
+    userAgent = "unknown";
+/* protect against huge strings coming in from outside */
+char safeAgent[255];
+snprintf(safeAgent, sizeof(safeAgent), "%s", userAgent);
+char safeAddr[255];
+snprintf(safeAddr, sizeof(safeAddr), "%s", remoteAddr);
+char safeVersion[255];
+snprintf(safeVersion, sizeof(safeVersion), "%s", version);
+
+printf("Content-Type:text/html\n\n\n");
+printf("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 3.2//EN\">");
+printf("<HTML><HEAD>\n");
+
+struct sqlConnection *conn = hConnectCentral();
+if (conn)
+    {
+    char query[1024];
+    if (sqlTableExists(conn, useCount))
+	{
+	safef(query, sizeof(query), "INSERT %s VALUES(0,\"%s\",\"%s\",now(),\"%s\")",
+            useCount, safeAgent, safeAddr, safeVersion);
+        sqlUpdate(conn,query);
+	count = sqlLastAutoId(conn);
+	safef(query, sizeof(query), "SELECT dateTime FROM %s WHERE count=%d",
+	    useCount, count);
+	/* yes, query is being reused here as result string */
+	dateTime = sqlQuickQuery(conn, query, query, sizeof(query));
+	}
+    else
+	{
+	printf("ERROR: can not find table '%s'<BR>\n", useCount);
+	}
+    hDisconnectCentral(&conn);
+    }
+
+printf("count: %d, date: %s<BR>\n", count, dateTime);
+printf("</HEAD></HTML>\n");
+return 0;
+}