int job_print(struct job_t *job) { struct file_t *file; struct sortField_t *sortField; struct outrec_t *outrec; if (job->inputFile!=NULL) { printf("INPUT FILE :\n"); for (file=job->inputFile; file!=NULL; file=file_getNext(file)) { printf("\t"); file_print(file); } } if (job->outputFile!=NULL) { printf("OUTPUT FILE :\n"); printf("\t"); file_print(job->outputFile); } if (job->sortField!=NULL) { printf("SORT FIELDS : ("); for (sortField=job->sortField; sortField!=NULL; sortField=sortField_getNext(sortField)) { if (sortField!=job->sortField) { printf(","); } sortField_print(sortField); } printf(")\n"); } if (job->includeCondField!=NULL) { printf("INCLUDE COND : ("); condField_print(job->includeCondField); printf(")\n"); } if (job->omitCondField!=NULL) { printf("OMIT COND : ("); condField_print(job->omitCondField); printf(")\n"); } if (job->outrec!=NULL) { printf("OUTREC FIELDS : ("); for (outrec=job->outrec; outrec!=NULL; outrec=outrec_getNext(outrec)) { if (outrec!=job->outrec) { printf(","); } outrec_print(outrec); } printf(")\n"); } if (job->sumFields==1) { printf("SUM FIELDS = NONE\n"); } return 0; }
/*/////////////////////////////////////// ///////////// THREAD FUNCTION /////////// ///////////////////////////////////////*/ void *waitThread() { int childID, status, iteration = 0; char linha[256]; FILE *f; f = fopen("log.txt", "a+"); if (f == NULL) { perror(error_fopen); } while (fgets(linha, 256, f) != NULL) { iteration++; } if (pthread_mutex_lock(&mutex) != 0) { perror(error_mutex_lock); } sscanf(linha, "total execution time: %d", &timeTotal); if (pthread_mutex_unlock(&mutex) != 0) { perror(error_mutex_unlock); } if (iteration > 0) { iteration = iteration / 3; } while (1){ if (pthread_mutex_lock(&mutex) != 0) { perror(error_mutex_lock); } while((numChildren == 0) && (isExit == false)) { pthread_cond_wait(&can_wait, &mutex); } if (pthread_mutex_unlock(&mutex) != 0) { perror(error_mutex_unlock); } if (numChildren > 0) { childID = wait(&status); if (pthread_mutex_lock(&mutex) != 0) { perror(error_mutex_lock); } timeTotal += update_terminated_process(l, childID, status, time(NULL)); file_print(f, l, iteration, childID, timeTotal); iteration++; numChildren--; if (pthread_cond_signal(&can_execute) != 0) { perror(error_cond_execute); } if (pthread_mutex_unlock(&mutex) != 0) { perror(error_mutex_unlock); } } else if (isExit == true) { if (fclose(f) != 0) { perror(error_fclose_log); } pthread_exit(NULL); } } }
/** Print plain text file @param path File path @todo unify with http_send_file */ void odcgi_print_file (const char *path) { openlog ("odcgi", LOG_PID, LOG_USER); char filename[1024]; // Building the full path snprintf (filename, sizeof (filename), "%s%s", OD_CFG_ROOT_DIR, path); file_t fs; file_set_filename (&fs, filename); syslog (LOG_NOTICE, "%s\n", filename); printf ("Cache-Control: max-age=3600, must-revalidate\n"); printf ("Content-Type: text/plain\n\n"); if (file_is_file (&fs)) { printf ("/* %s: */\n", filename); file_print (&fs); } else { printf ("/* File (%s) does not exist */\n\n", filename); } }