Changeset View
Changeset View
Standalone View
Standalone View
head/usr.sbin/mptutil/mpt_evt.c
Show First 20 Lines • Show All 118 Lines • ▼ Show 20 Lines | show_events(int ac, char **av) | ||||
optind = 1; | optind = 1; | ||||
while ((ch = getopt(ac, av, "v")) != -1) { | while ((ch = getopt(ac, av, "v")) != -1) { | ||||
switch (ch) { | switch (ch) { | ||||
case 'v': | case 'v': | ||||
verbose = 1; | verbose = 1; | ||||
break; | break; | ||||
case '?': | case '?': | ||||
default: | default: | ||||
free(log); | |||||
close(fd); | |||||
return (EINVAL); | return (EINVAL); | ||||
} | } | ||||
} | } | ||||
ac -= optind; | ac -= optind; | ||||
av += optind; | av += optind; | ||||
/* Build a list of valid entries and sort them by sequence. */ | /* Build a list of valid entries and sort them by sequence. */ | ||||
entries = malloc(sizeof(MPI_LOG_0_ENTRY *) * log->NumLogEntries); | entries = malloc(sizeof(MPI_LOG_0_ENTRY *) * log->NumLogEntries); | ||||
if (entries == NULL) | if (entries == NULL) { | ||||
free(log); | |||||
close(fd); | |||||
return (ENOMEM); | return (ENOMEM); | ||||
} | |||||
num_events = 0; | num_events = 0; | ||||
for (i = 0; i < log->NumLogEntries; i++) { | for (i = 0; i < log->NumLogEntries; i++) { | ||||
if (log->LogEntry[i].LogEntryQualifier == | if (log->LogEntry[i].LogEntryQualifier == | ||||
MPI_LOG_0_ENTRY_QUAL_ENTRY_UNUSED) | MPI_LOG_0_ENTRY_QUAL_ENTRY_UNUSED) | ||||
continue; | continue; | ||||
entries[num_events] = &log->LogEntry[i]; | entries[num_events] = &log->LogEntry[i]; | ||||
num_events++; | num_events++; | ||||
} | } | ||||
qsort(entries, num_events, sizeof(MPI_LOG_0_ENTRY *), event_compare); | qsort(entries, num_events, sizeof(MPI_LOG_0_ENTRY *), event_compare); | ||||
if (num_events == 0) | if (num_events == 0) | ||||
printf("Event log is empty\n"); | printf("Event log is empty\n"); | ||||
else { | else { | ||||
printf(" ID Time Type Log Data\n"); | printf(" ID Time Type Log Data\n"); | ||||
for (i = 0; i < num_events; i++) | for (i = 0; i < num_events; i++) | ||||
mpt_print_event(entries[i], verbose); | mpt_print_event(entries[i], verbose); | ||||
} | } | ||||
free(entries); | free(entries); | ||||
free(log); | |||||
close(fd); | close(fd); | ||||
return (0); | return (0); | ||||
} | } | ||||
MPT_COMMAND(show, events, show_events); | MPT_COMMAND(show, events, show_events); |