// Read the history from the specified history file, or from all the history files. // There are multiple history files because we do rotation. static void readHistoryFromFiles(char *JobHistoryFileName, char* constraint, ExprTree *constraintExpr) { // Print header if ((!longformat) && (!customFormat)) { short_header(); } if (JobHistoryFileName) { // If the user specified the name of the file to read, we read that file only. readHistoryFromFile(JobHistoryFileName, constraint, constraintExpr); } else { // The user didn't specify the name of the file to read, so we read // the history file, and any backups (rotated versions). int numHistoryFiles; const char **historyFiles; historyFiles = findHistoryFiles(&numHistoryFiles); if (historyFiles && numHistoryFiles > 0) { int fileIndex; if (backwards) { // Reverse reading of history files array for(fileIndex = numHistoryFiles - 1; fileIndex >= 0; fileIndex--) { readHistoryFromFile(historyFiles[fileIndex], constraint, constraintExpr); } } else { for (fileIndex = 0; fileIndex < numHistoryFiles; fileIndex++) { readHistoryFromFile(historyFiles[fileIndex], constraint, constraintExpr); } } } freeHistoryFilesList(historyFiles); } return; }
int main(int argc, char* argv[]) { void **parameters; char* JobHistoryFileName=NULL; int i; parameters = (void **) malloc(NUM_PARAMETERS * sizeof(void *)); myDistro->Init( argc, argv ); config(); Termlog = 1; dprintf_config("TOOL", get_param_functions()); for(i=1; i<argc; i++) { if (strcmp(argv[i],"-f")==0) { if (i+1==argc || JobHistoryFileName) break; i++; JobHistoryFileName=argv[i]; } else if (strcmp(argv[i],"-help")==0) { Usage(argv[0],0); } else if (strcmp(argv[i],"-name")==0) { if (i+1==argc || ScheddName) break; i++; ScheddName=strdup(argv[i]); if ((i+1==argc) || ScheddBirthdate) break; i++; ScheddBirthdate = atoi(argv[i]); } /* else if (strcmp(argv[i],"-debug")==0) { // dprintf to console Termlog = 1; } */ else { Usage(argv[0]); } } if (i<argc) Usage(argv[0]); if (JobHistoryFileName == NULL) Usage(argv[0]); if ((ScheddName == NULL) || (ScheddBirthdate == 0)) { if (ScheddName) fprintf(stdout, "You specified Schedd name without a Job Queue" "Birthdate. Ignoring value %s\n", ScheddName); Daemon schedd( DT_SCHEDD, 0, 0 ); if ( schedd.locate() ) { char *scheddname; if( (scheddname = schedd.name()) ) { ScheddName = strdup(scheddname); } else { fprintf(stderr, "You did not specify a Schedd name and Job Queue " "Birthdate on the command line " "and there was an error getting the Schedd " "name from the local Schedd Daemon Ad. Please " "check that the SCHEDD_DAEMON_AD_FILE config " "parameter is set and the file contains a valid " "Schedd Daemon ad.\n"); exit(1); } ClassAd *daemonAd = schedd.daemonAd(); if(daemonAd) { if (!(daemonAd->LookupInteger( ATTR_JOB_QUEUE_BIRTHDATE, ScheddBirthdate) )) { // Can't find the job queue birthdate fprintf(stderr, "You did not specify a Schedd name and " "Job Queue Birthdate on the command line " "and there was an error getting the Job Queue " "Birthdate from the local Schedd Daemon Ad. Please " "check that the SCHEDD_DAEMON_AD_FILE config " "parameter is set and the file contains a valid " "Schedd Daemon ad.\n"); exit(1); } } } else { fprintf(stderr, "You did not specify a Schedd name and Job Queue " "Birthdate on the command line and there was " "an error getting the Schedd Daemon Ad. Please " "check that Condor is running and the SCHEDD_DAEMON_AD_FILE " "config parameter is set and the file contains a valid " "Schedd Daemon ad.\n"); exit(1); } } doDBconfig(); readHistoryFromFile(JobHistoryFileName); if(parameters) free(parameters); if(ScheddName) free(ScheddName); return 0; }