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(""); +printf("\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'
\n", useCount); + } + hDisconnectCentral(&conn); + } + +printf("count: %d, date: %s
\n", count, dateTime); +printf("\n"); +return 0; +}