diff options
-rw-r--r-- | dmidecode.c | 31 | ||||
-rw-r--r-- | dmiopt.c | 7 | ||||
-rw-r--r-- | dmiopt.h | 1 |
3 files changed, 25 insertions, 14 deletions
diff --git a/dmidecode.c b/dmidecode.c index 6be915e..55ac64f 100644 --- a/dmidecode.c +++ b/dmidecode.c @@ -3769,10 +3769,10 @@ static void dmi_table(u32 base, u16 len, u16 num, u16 ver, const char *devmem) u8 *data; int i=0; - printf("%u structures occupying %u bytes.\n", - num, len); - printf("Table at 0x%08X.\n", - base); + if(!(opt.flags & FLAG_QUIET)) + printf("%u structures occupying %u bytes.\n" + "Table at 0x%08X.\n", + num, len, base); if((buf=mem_chunk(base, len, devmem))==NULL) { @@ -3787,9 +3787,10 @@ static void dmi_table(u32 base, u16 len, u16 num, u16 ver, const char *devmem) { u8 *next; struct dmi_header *h=(struct dmi_header *)data; - int display=(opt.type==NULL || opt.type[h->type]); + int display=((opt.type==NULL || opt.type[h->type]) + && !((opt.flags & FLAG_QUIET) && h->type>=126)); - if(display) + if(display && !(opt.flags & FLAG_QUIET)) printf("Handle 0x%04X\n\tDMI type %d, %d bytes.\n", HANDLE(h), h->type, h->length); @@ -3832,8 +3833,9 @@ static int smbios_decode(u8 *buf, const char *devmem) && memcmp(buf+0x10, "_DMI_", 5)==0 && checksum(buf+0x10, 0x0F)) { - printf("SMBIOS %u.%u present.\n", - buf[0x06], buf[0x07]); + if(!(opt.flags & FLAG_QUIET)) + printf("SMBIOS %u.%u present.\n", + buf[0x06], buf[0x07]); dmi_table(DWORD(buf+0x18), WORD(buf+0x16), WORD(buf+0x1C), (buf[0x06]<<8)+buf[0x07], devmem); return 1; @@ -3847,8 +3849,9 @@ static int legacy_decode(u8 *buf, const char *devmem) { if(checksum(buf, 0x0F)) { - printf("Legacy DMI %u.%u present.\n", - buf[0x0E]>>4, buf[0x0E]&0x0F); + if(!(opt.flags & FLAG_QUIET)) + printf("Legacy DMI %u.%u present.\n", + buf[0x0E]>>4, buf[0x0E]&0x0F); dmi_table(DWORD(buf+0x08), WORD(buf+0x06), WORD(buf+0x0C), ((buf[0x0E]&0xF0)<<4)+(buf[0x0E]&0x0F), devmem); return 1; @@ -3898,7 +3901,8 @@ int main(int argc, char * const argv[]) goto exit_free; } - printf("# dmidecode %s\n", VERSION); + if(!(opt.flags & FLAG_QUIET)) + printf("# dmidecode %s\n", VERSION); #ifdef USE_EFI /* @@ -3920,7 +3924,8 @@ int main(int argc, char * const argv[]) if(strcmp(linebuf, "SMBIOS")==0) { fp=strtoul(addr, NULL, 0); - printf("# SMBIOS entry point at 0x%08lx\n", fp); + if(!(opt.flags & FLAG_QUIET)) + printf("# SMBIOS entry point at 0x%08lx\n", fp); } } if(fclose(efi_systab)!=0) @@ -3967,7 +3972,7 @@ int main(int argc, char * const argv[]) free(buf); #endif /* USE_EFI */ - if(!found) + if(!found && !(opt.flags & FLAG_QUIET)) printf("# No SMBIOS nor DMI entry point found, sorry.\n"); exit_free: @@ -122,10 +122,11 @@ exit_free: int parse_command_line(int argc, char * const argv[]) { int option; - const char *optstring = "d:ht:uV"; + const char *optstring = "d:hqt:uV"; struct option longopts[]={ { "dev-mem", required_argument, NULL, 'd' }, { "help", no_argument, NULL, 'h' }, + { "quiet", no_argument, NULL, 'q' }, { "type", required_argument, NULL, 't' }, { "dump", no_argument, NULL, 'u' }, { "version", no_argument, NULL, 'V' }, @@ -141,6 +142,9 @@ int parse_command_line(int argc, char * const argv[]) case 'h': opt.flags|=FLAG_HELP; break; + case 'q': + opt.flags|=FLAG_QUIET; + break; case 't': opt.type=parse_opt_type(opt.type, optarg); if(opt.type==NULL) @@ -167,6 +171,7 @@ void print_help(void) "Options are:\n" " -d, --dev-mem FILE Read memory from device FILE (default: " DEFAULT_MEM_DEV ")\n" " -h, --help Display this help text and exit\n" + " -q, --quiet Less verbose output\n" " -t, --type TYPE Only display the entries of given type\n" " -u, --dump Do not decode the entries\n" " -V, --version Display the version and exit\n"; @@ -30,6 +30,7 @@ extern struct opt opt; #define FLAG_VERSION (1<<0) #define FLAG_HELP (1<<1) #define FLAG_DUMP (1<<2) +#define FLAG_QUIET (1<<3) int parse_command_line(int argc, char * const argv[]); void print_help(void); |