jbe@0: #include jbe@0: #include jbe@0: #include jbe@0: #include jbe@0: jbe@0: int main(int argc, char **argv) { jbe@1: jbe@1: // variable declarations: jbe@65: int err = 0; jbe@0: int i, count; jbe@0: char *conninfo; jbe@0: PGconn *db; jbe@0: PGresult *list; jbe@0: PGresult *status; jbe@1: jbe@1: // parse command line: jbe@0: if (argc == 0) return 1; jbe@0: if (argc == 1 || !strcmp(argv[1], "-h") || !strcmp(argv[1], "--help")) { jbe@0: FILE *out; jbe@0: out = argc == 1 ? stderr : stdout; jbe@0: fprintf(stdout, "\n"); jbe@0: fprintf(stdout, "Usage: %s \n", argv[0]); jbe@0: fprintf(stdout, "\n"); jbe@0: fprintf(stdout, " is specified by PostgreSQL's libpq,\n"); jbe@0: fprintf(stdout, "see http://www.postgresql.org/docs/8.4/static/libpq-connect.html\n"); jbe@0: fprintf(stdout, "\n"); jbe@0: fprintf(stdout, "Example: %s dbname=liquid_feedback\n", argv[0]); jbe@0: fprintf(stdout, "\n"); jbe@0: return argc == 1 ? 1 : 0; jbe@0: } jbe@0: { jbe@0: size_t len = 0; jbe@0: for (i=1; i1) strcat(conninfo, " "); jbe@0: strcat(conninfo, argv[i]); jbe@0: } jbe@0: } jbe@1: jbe@1: // connect to database: jbe@0: db = PQconnectdb(conninfo); jbe@0: if (!db) { jbe@0: fprintf(stderr, "Error: Could not create database handle\n"); jbe@0: return 1; jbe@0: } jbe@0: if (PQstatus(db) != CONNECTION_OK) { jbe@0: fprintf(stderr, "Could not open connection:\n%s", PQerrorMessage(db)); jbe@0: return 1; jbe@0: } jbe@1: jbe@235: // delete expired sessions: jbe@235: status = PQexec(db, "DELETE FROM \"expired_session\""); jbe@235: if (!status) { jbe@235: fprintf(stderr, "Error in pqlib while sending SQL command deleting expired sessions\n"); jbe@235: err = 1; jbe@235: } else if ( jbe@235: PQresultStatus(status) != PGRES_COMMAND_OK && jbe@235: PQresultStatus(status) != PGRES_TUPLES_OK jbe@235: ) { jbe@235: fprintf(stderr, "Error while executing SQL command deleting expired sessions:\n%s", PQresultErrorMessage(status)); jbe@235: err = 1; jbe@235: PQclear(status); jbe@235: } else { jbe@235: PQclear(status); jbe@235: } jbe@235: jbe@184: // check member activity: jbe@184: status = PQexec(db, "SELECT \"check_activity\"()"); jbe@103: if (!status) { jbe@184: fprintf(stderr, "Error in pqlib while sending SQL command checking member activity\n"); jbe@103: err = 1; jbe@103: } else if ( jbe@103: PQresultStatus(status) != PGRES_COMMAND_OK && jbe@103: PQresultStatus(status) != PGRES_TUPLES_OK jbe@103: ) { jbe@184: fprintf(stderr, "Error while executing SQL command checking member activity:\n%s", PQresultErrorMessage(status)); jbe@103: err = 1; jbe@103: PQclear(status); jbe@103: } else { jbe@103: PQclear(status); jbe@103: } jbe@103: jbe@4: // calculate member counts: jbe@4: status = PQexec(db, "SELECT \"calculate_member_counts\"()"); jbe@4: if (!status) { jbe@4: fprintf(stderr, "Error in pqlib while sending SQL command calculating member counts\n"); jbe@65: err = 1; jbe@65: } else if ( jbe@4: PQresultStatus(status) != PGRES_COMMAND_OK && jbe@4: PQresultStatus(status) != PGRES_TUPLES_OK jbe@4: ) { jbe@4: fprintf(stderr, "Error while executing SQL command calculating member counts:\n%s", PQresultErrorMessage(status)); jbe@65: err = 1; jbe@65: PQclear(status); jbe@65: } else { jbe@65: PQclear(status); jbe@4: } jbe@4: jbe@1: // update open issues: jbe@0: list = PQexec(db, "SELECT \"id\" FROM \"open_issue\""); jbe@0: if (!list) { jbe@0: fprintf(stderr, "Error in pqlib while sending SQL command selecting open issues\n"); jbe@65: err = 1; jbe@65: } else if (PQresultStatus(list) != PGRES_TUPLES_OK) { jbe@0: fprintf(stderr, "Error while executing SQL command selecting open issues:\n%s", PQresultErrorMessage(list)); jbe@65: err = 1; jbe@65: PQclear(list); jbe@65: } else { jbe@65: count = PQntuples(list); jbe@65: for (i=0; i