void generate_occi_sql_on_create( FILE * h, char * nptr, char * fullname ) { char buffer[1024]; char * xptr=(char *) 0; char * wptr; struct item * iptr; int items=0; fprintf(h,"\nprivate int %s_sql_on_create()\n{\n",fullname); fprintf(h,"\tstruct occi_expression expression={(char *) 0, (void *) 0};\n"); for ( iptr= C.first; iptr != (struct item *) 0; iptr = iptr->next ) { if (!( strcmp( iptr->name, "previous" ) )) continue; else if (!( strcmp( iptr->name, "next" ) )) continue; else if (!( strcmp( iptr->name, "parent" ) )) continue; else if (!( strncmp( iptr->name, "first", strlen("first") ) )) continue; else if (!( strncmp( iptr->name, "last", strlen("last") ) )) continue; else { if (!( strcmp( iptr->basic, "int" ) )) sprintf(buffer, "%s %s INTEGER",(xptr ? "," : " ("),iptr->name); else sprintf(buffer, "%s %s CHAR(128)",(xptr ? "," : " ("),iptr->name); if ( xptr ) { if (!( wptr = allocate( strlen( xptr ) + strlen( buffer ) + 3 ) )) break; else sprintf(wptr,"%s%s",xptr,buffer); liberate( xptr ); xptr = wptr; } else xptr = allocate_string( buffer ); if (!( strcmp( iptr->name, "id" ) )) xptr = join_string( xptr, " PRIMARY KEY"); } } if ( xptr ) { xptr = join_string( xptr, " ) "); fprintf(h,"\tif (!( expression.value = allocate_string(%c%s%c) ))\n",0x0022,xptr,0x0022); fprintf(h,"\t\treturn( 27 );\n"); } fprintf(h,"\treturn(0);\n"); fprintf(h,"}\n"); return; }
char *factoid_set(array *args, struct irc_message *msg) { size_t i; char value[512]; char *s; if (array_count(args) < 2) return NULL; join_string(args, 1, value, " "); /* value[0] = 0; for (i = 1; i != array_count(args); ++i) { s = *(char**)array_at(args, i); strcat(value, s); strcat(value, " "); } */ strmap_insert(&factoids, *(char**)array_at(args, 0), value); return NULL; }
char *shell(array *args, struct irc_message *msg) { char dope[512]; int hookah[6]; ssize_t readbytes; pid_t pothead; char *gram; if (array_count(args) < 1) return NULL; join_string(args, 0, dope, " "); pipe(&hookah[0]); pipe(&hookah[2]); pipe(&hookah[4]); pothead = fork(); if (pothead == 0) { dup2(hookah[0], 0); close(hookah[1]); dup2(hookah[3], 1); close(hookah[2]); dup2(hookah[5], 2); close(hookah[4]); execl("/bin/bash", "/bin/bash", "-s", NULL); exit(0); } close(hookah[0]); close(hookah[3]); close(hookah[5]); write(hookah[1], dope, strlen(dope)); close(hookah[1]); memset(dope, 0, 512); for (gram = dope; (readbytes = read(hookah[2], gram, dope + 512 - gram)) > 0; gram += readbytes); for (gram = dope; *gram; ++gram) { if (*gram == '\n' || *gram == '\r') *gram = ' '; } return new_string(dope); }
int main(int argc, char *argv[]) { /* The current event file is /lsf/work/lsf-odyssey/logdir/lsb.acct" * * John Brunelle has all previous (mostly) event files in /n/RC_Team/lsf_logs.sorted/acct */ FILE *fp; char *eventFile = argv[1]; int lineNum = 0; struct eventRec *record; struct jobFinishLog *finishJob; if (argc != 2) { printf("Usage: %s lsb.acct\n", argv[0]); exit(-1); } if (lsb_init(argv[0]) < 0) { lsb_perror("lsb_init"); exit(-1); } fp = fopen(eventFile, "r"); if (fp == NULL) { perror(eventFile); exit(-1); } struct jobFinishLog *finishJob; for (;;) { record = lsb_geteventrec(fp, &lineNum); if (record == NULL) { if (lsberrno == LSBE_EOF) exit(0); lsb_perror("lsb_geteventrec"); exit(-1); } if (record->type == EVENT_JOB_FINISH) { finishJob = &(record->eventLog.jobFinishLog); int jobId = finishJob->jobId; int userId = finishJob->userId; char *userName = finishJob->userName; int options = finishJob->options; int numProcessors = finishJob->numProcessors; int jStatus = finishJob->jStatus; time_t submitTime = finishJob->submitTime; time_t startTime = finishJob->startTime; time_t endTime = finishJob->endTime; char *queue = finishJob->queue; char *subtime = ctime(&submitTime); char *starttime = ctime(&startTime); char *endtime = ctime(&endTime); subtime[24] = '\0'; starttime[24] = '\0'; endtime[24] = '\0'; printf("\"\\N\",\"%d\",\"%d\",\"%s\",\"%d\",\"%d\",\"%d\",\"%ld\",\"%ld\",\"%ld\",\"%s\",", jobId, userId, userName, options, numProcessors, jStatus, submitTime, startTime, endTime, queue); char *resReq = finishJob->resReq; char *fromHost = finishJob->fromHost; char *cwd = finishJob->cwd; char *inFile = finishJob->inFile; char *outFile = finishJob->outFile; char *errFile = finishJob->errFile; char *inFileSpool = finishJob->inFileSpool; printf("\"%s\",\"%s\",\"%s\",\"%s\",\"%s\",\"%s\",\"%s\",", resReq, fromHost, cwd, inFile, outFile, errFile, inFileSpool); char *commandSpool = finishJob->commandSpool; char *jobFile = finishJob->jobFile; int numAskedHosts = finishJob->numAskedHosts; char **askedHosts = finishJob->askedHosts; float hostFactor = finishJob->hostFactor; int numExHosts = finishJob->numExHosts; char **execHosts = finishJob->execHosts; float cpuTime = finishJob->cpuTime; char *jobName = finishJob->jobName; char *command = finishJob->command; char *askedHostsString = join_string(askedHosts,numAskedHosts,","); char *execHostsString = join_string(execHosts,numExHosts,","); printf("\"%s\",\"%s\",\"%d\",\"%s\",\"%f\",\"%d\",\"%s\",\"%f\",\"%s\",",commandSpool,jobFile,numAskedHosts,askedHostsString,hostFactor,numExHosts,execHostsString,cpuTime,jobName); /*struct lsfRuage *lsfRusage = finishJob->lsfRusage;*/ char *dependCond = finishJob->dependCond; char *timeEvent = finishJob->timeEvent; char *preExecCmd = finishJob->preExecCmd; char *mailUser = finishJob->mailUser; char *projectName = finishJob->projectName; int exitStatus = finishJob->exitStatus; int maxNumProcessors = finishJob->maxNumProcessors; printf("\"%s\",\"%s\",\"%s\",\"%s\",\"%s\",\"%d\",\"%d\",",dependCond,timeEvent,preExecCmd,mailUser,projectName,exitStatus,maxNumProcessors); char *loginShell = finishJob->loginShell; int idx = finishJob->idx; int maxRMem = finishJob->maxRMem; int maxRSwap = finishJob->maxRSwap; char *rsvId = finishJob->rsvId; char *sla = finishJob->sla; int exceptMask = finishJob->exceptMask; char *additionalInfo = finishJob->additionalInfo; printf("\"%s\",\"%d\",\"%d\",\"%d\",\"%s\",\"%s\",\"%d\",\"%s\",",loginShell,idx,maxRMem,maxRSwap,rsvId,sla,exceptMask,additionalInfo); int exitInfo = finishJob->exitInfo; int warningTimePeriod = finishJob->warningTimePeriod; char *warningAction = finishJob->warningAction; char *chargedSAAP = finishJob->chargedSAAP; char *licenseProject = finishJob->licenseProject; char *app = finishJob->app; char *postExecCmd = finishJob->postExecCmd; int runtimeEstimation = finishJob->runtimeEstimation; char *jgroup = finishJob->jgroup; int options2 = finishJob->options2; char *requeueEValues = finishJob->requeueEValues; char *notifyCmd = finishJob->notifyCmd; time_t lastResizeTime = finishJob->lastResizeTime; char *jobDescription = finishJob->jobDescription; /* struct submit_ext *submitExt = finishJob->submitExt;*/ char *tmpstr = ctime(&lastResizeTime); tmpstr[24] = '\0'; printf("\"%d\",\"%d\",\"%s\",\"%s\",\"%s\",\"%s\",\"%s\",\"%d\",\"%s\",\"%d\",\"%s\",\"%s\",\"%ld\",\"%s\",\"%s;\n", exitInfo, warningTimePeriod, warningAction, chargedSAAP, licenseProject, app, postExecCmd, runtimeEstimation, jgroup, options2, requeueEValues, notifyCmd, lastResizeTime, jobDescription, command); } } }