/* *************************************************************************** * Check that options entered on the command line are consistent with * selected output format. If no output format has been explicitly entered, * then select a default one. *************************************************************************** */ void check_format_options(void) { if (!format) { /* Select output format if none has been selected */ if (DISPLAY_HDR_ONLY(flags)) { format = F_HEADER_OUTPUT; } else { format = F_PPC_OUTPUT; } } /* Get format position in array */ f_position = get_format_position(fmt, format); /* Check options consistency wrt output format */ if (!ACCEPT_HEADER_ONLY(fmt[f_position]->options)) { /* Remove option -H */ flags &= ~S_F_HDR_ONLY; } if (!ACCEPT_HORIZONTALLY(fmt[f_position]->options)) { /* Remove option -h */ flags &= ~S_F_HORIZONTALLY; } if (!ACCEPT_TRUE_TIME(fmt[f_position]->options)) { /* Remove option -t */ flags &= ~S_F_TRUE_TIME; } if (!ACCEPT_SEC_EPOCH(fmt[f_position]->options)) { /* Remove option -T */ flags &= ~S_F_SEC_EPOCH; } }
/* *************************************************************************** * Check system activity datafile contents before displaying stats. * Display file header if option -H has been entered, else call function * corresponding to selected output format. * * IN: * @dfile System activity data file name. *************************************************************************** */ void read_stats_from_file(char dfile[]) { struct file_magic file_magic; struct file_activity *file_actlst = NULL; struct tm rectime, loctime; int ifd, ignore, tab = 0; __nr_t cpu_nr; /* Prepare file for reading and read its headers */ ignore = ACCEPT_BAD_FILE_FORMAT(fmt[f_position]->options); check_file_actlst(&ifd, dfile, act, &file_magic, &file_hdr, &file_actlst, id_seq, ignore); /* Now pick up number of proc for this file */ cpu_nr = act[get_activity_position(act, A_CPU, EXIT_IF_NOT_FOUND)]->nr; if (DISPLAY_HDR_ONLY(flags)) { if (*fmt[f_position]->f_header) { /* Display only data file header then exit */ (*fmt[f_position]->f_header)(&tab, F_BEGIN + F_END, dfile, &file_magic, &file_hdr, cpu_nr, act, id_seq); } exit(0); } /* Perform required allocations */ allocate_structures(act); /* Call function corresponding to selected output format */ if (format == F_SVG_OUTPUT) { logic3_display_loop(ifd, file_actlst, cpu_nr, &rectime, &loctime, dfile, &file_magic); } else if (DISPLAY_GROUPED_STATS(fmt[f_position]->options)) { logic2_display_loop(ifd, file_actlst, cpu_nr, &rectime, &loctime, dfile, &file_magic); } else { logic1_display_loop(ifd, file_actlst, dfile, &file_magic, cpu_nr, &rectime, &loctime); } close(ifd); free(file_actlst); free_structures(act); }