dmidecode-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[dmidecode] [PATCH 05/11] dmidecode: Add helper function pr_handle_name


From: Jean Delvare
Subject: [dmidecode] [PATCH 05/11] dmidecode: Add helper function pr_handle_name
Date: Tue, 24 Mar 2020 17:39:07 +0100

Print the name of each handle type through a helper function
pr_handle_name.

Signed-off-by: Jean Delvare <address@hidden>
---
 dmidecode.c |   99 +++++++++++++++++++++++++++++-------------------------------
 dmioem.c    |   25 +++++++--------
 dmioutput.c |   10 ++++++
 dmioutput.h |    1 
 4 files changed, 73 insertions(+), 62 deletions(-)

--- dmidecode.orig/dmidecode.c  2020-03-24 15:00:09.831053059 +0100
+++ dmidecode/dmidecode.c       2020-03-24 15:00:19.058165425 +0100
@@ -2083,11 +2083,10 @@ static void dmi_on_board_devices(const s
        for (i = 0; i < count; i++)
        {
                if (count == 1)
-                       printf("%sOn Board Device Information\n",
-                               prefix);
+                       pr_handle_name("On Board Device Information");
                else
-                       printf("%sOn Board Device %d Information\n",
-                               prefix, i + 1);
+                       pr_handle_name("On Board Device %d Information",
+                                      i + 1);
                printf("%s\tType: %s\n",
                        prefix, dmi_on_board_devices_type(p[2 * i] & 0x7F));
                printf("%s\tStatus: %s\n",
@@ -3397,7 +3396,7 @@ static void dmi_additional_info(const st
 
        for (i = 0; i < count; i++)
        {
-               printf("%sAdditional Information %d\n", prefix, i + 1);
+               pr_handle_name("Additional Information %d", i + 1);
 
                /* Check for short entries */
                if (h->length < offset + 1) break;
@@ -3893,7 +3892,7 @@ static void dmi_decode(const struct dmi_
        switch (h->type)
        {
                case 0: /* 7.1 BIOS Information */
-                       printf("BIOS Information\n");
+                       pr_handle_name("BIOS Information");
                        if (h->length < 0x12) break;
                        printf("\tVendor: %s\n",
                                dmi_string(h, data[0x04]));
@@ -3933,7 +3932,7 @@ static void dmi_decode(const struct dmi_
                        break;
 
                case 1: /* 7.2 System Information */
-                       printf("System Information\n");
+                       pr_handle_name("System Information");
                        if (h->length < 0x08) break;
                        printf("\tManufacturer: %s\n",
                                dmi_string(h, data[0x04]));
@@ -3957,7 +3956,7 @@ static void dmi_decode(const struct dmi_
                        break;
 
                case 2: /* 7.3 Base Board Information */
-                       printf("Base Board Information\n");
+                       pr_handle_name("Base Board Information");
                        if (h->length < 0x08) break;
                        printf("\tManufacturer: %s\n",
                                dmi_string(h, data[0x04]));
@@ -3988,7 +3987,7 @@ static void dmi_decode(const struct dmi_
                        break;
 
                case 3: /* 7.4 Chassis Information */
-                       printf("Chassis Information\n");
+                       pr_handle_name("Chassis Information");
                        if (h->length < 0x09) break;
                        printf("\tManufacturer: %s\n",
                                dmi_string(h, data[0x04]));
@@ -4030,7 +4029,7 @@ static void dmi_decode(const struct dmi_
                        break;
 
                case 4: /* 7.5 Processor Information */
-                       printf("Processor Information\n");
+                       pr_handle_name("Processor Information");
                        if (h->length < 0x1A) break;
                        printf("\tSocket Designation: %s\n",
                                dmi_string(h, data[0x04]));
@@ -4100,7 +4099,7 @@ static void dmi_decode(const struct dmi_
                        break;
 
                case 5: /* 7.6 Memory Controller Information */
-                       printf("Memory Controller Information\n");
+                       pr_handle_name("Memory Controller Information");
                        if (h->length < 0x0F) break;
                        printf("\tError Detecting Method: %s\n",
                                dmi_memory_controller_ed_method(data[0x04]));
@@ -4130,7 +4129,7 @@ static void dmi_decode(const struct dmi_
                        break;
 
                case 6: /* 7.7 Memory Module Information */
-                       printf("Memory Module Information\n");
+                       pr_handle_name("Memory Module Information");
                        if (h->length < 0x0C) break;
                        printf("\tSocket Designation: %s\n",
                                dmi_string(h, data[0x04]));
@@ -4154,7 +4153,7 @@ static void dmi_decode(const struct dmi_
                        break;
 
                case 7: /* 7.8 Cache Information */
-                       printf("Cache Information\n");
+                       pr_handle_name("Cache Information");
                        if (h->length < 0x0F) break;
                        printf("\tSocket Designation: %s\n",
                                dmi_string(h, data[0x04]));
@@ -4197,7 +4196,7 @@ static void dmi_decode(const struct dmi_
                        break;
 
                case 8: /* 7.9 Port Connector Information */
-                       printf("Port Connector Information\n");
+                       pr_handle_name("Port Connector Information");
                        if (h->length < 0x09) break;
                        printf("\tInternal Reference Designator: %s\n",
                                dmi_string(h, data[0x04]));
@@ -4212,7 +4211,7 @@ static void dmi_decode(const struct dmi_
                        break;
 
                case 9: /* 7.10 System Slots */
-                       printf("System Slot Information\n");
+                       pr_handle_name("System Slot Information");
                        if (h->length < 0x0C) break;
                        printf("\tDesignation: %s\n",
                                dmi_string(h, data[0x04]));
@@ -4243,19 +4242,19 @@ static void dmi_decode(const struct dmi_
                        break;
 
                case 11: /* 7.12 OEM Strings */
-                       printf("OEM Strings\n");
+                       pr_handle_name("OEM Strings");
                        if (h->length < 0x05) break;
                        dmi_oem_strings(h, "\t");
                        break;
 
                case 12: /* 7.13 System Configuration Options */
-                       printf("System Configuration Options\n");
+                       pr_handle_name("System Configuration Options");
                        if (h->length < 0x05) break;
                        dmi_system_configuration_options(h, "\t");
                        break;
 
                case 13: /* 7.14 BIOS Language Information */
-                       printf("BIOS Language Information\n");
+                       pr_handle_name("BIOS Language Information");
                        if (h->length < 0x16) break;
                        if (ver >= 0x0201)
                        {
@@ -4269,7 +4268,7 @@ static void dmi_decode(const struct dmi_
                        break;
 
                case 14: /* 7.15 Group Associations */
-                       printf("Group Associations\n");
+                       pr_handle_name("Group Associations");
                        if (h->length < 0x05) break;
                        printf("\tName: %s\n",
                                dmi_string(h, data[0x04]));
@@ -4279,7 +4278,7 @@ static void dmi_decode(const struct dmi_
                        break;
 
                case 15: /* 7.16 System Event Log */
-                       printf("System Event Log\n");
+                       pr_handle_name("System Event Log");
                        if (h->length < 0x14) break;
                        printf("\tArea Length: %u bytes\n",
                                WORD(data + 0x04));
@@ -4311,7 +4310,7 @@ static void dmi_decode(const struct dmi_
                        break;
 
                case 16: /* 7.17 Physical Memory Array */
-                       printf("Physical Memory Array\n");
+                       pr_handle_name("Physical Memory Array");
                        if (h->length < 0x0F) break;
                        printf("\tLocation: %s\n",
                                dmi_memory_array_location(data[0x04]));
@@ -4347,7 +4346,7 @@ static void dmi_decode(const struct dmi_
                        break;
 
                case 17: /* 7.18 Memory Device */
-                       printf("Memory Device\n");
+                       pr_handle_name("Memory Device");
                        if (h->length < 0x15) break;
                        if (!(opt.flags & FLAG_QUIET))
                        {
@@ -4457,7 +4456,7 @@ static void dmi_decode(const struct dmi_
                        break;
 
                case 18: /* 7.19 32-bit Memory Error Information */
-                       printf("32-bit Memory Error Information\n");
+                       pr_handle_name("32-bit Memory Error Information");
                        if (h->length < 0x17) break;
                        printf("\tType: %s\n",
                                dmi_memory_error_type(data[0x04]));
@@ -4480,7 +4479,7 @@ static void dmi_decode(const struct dmi_
                        break;
 
                case 19: /* 7.20 Memory Array Mapped Address */
-                       printf("Memory Array Mapped Address\n");
+                       pr_handle_name("Memory Array Mapped Address");
                        if (h->length < 0x0F) break;
                        if (h->length >= 0x1F && DWORD(data + 0x04) == 
0xFFFFFFFF)
                        {
@@ -4516,7 +4515,7 @@ static void dmi_decode(const struct dmi_
                        break;
 
                case 20: /* 7.21 Memory Device Mapped Address */
-                       printf("Memory Device Mapped Address\n");
+                       pr_handle_name("Memory Device Mapped Address");
                        if (h->length < 0x13) break;
                        if (h->length >= 0x23 && DWORD(data + 0x04) == 
0xFFFFFFFF)
                        {
@@ -4559,7 +4558,7 @@ static void dmi_decode(const struct dmi_
                        break;
 
                case 21: /* 7.22 Built-in Pointing Device */
-                       printf("Built-in Pointing Device\n");
+                       pr_handle_name("Built-in Pointing Device");
                        if (h->length < 0x07) break;
                        printf("\tType: %s\n",
                                dmi_pointing_device_type(data[0x04]));
@@ -4570,7 +4569,7 @@ static void dmi_decode(const struct dmi_
                        break;
 
                case 22: /* 7.23 Portable Battery */
-                       printf("Portable Battery\n");
+                       pr_handle_name("Portable Battery");
                        if (h->length < 0x10) break;
                        printf("\tLocation: %s\n",
                                dmi_string(h, data[0x04]));
@@ -4618,7 +4617,7 @@ static void dmi_decode(const struct dmi_
                        break;
 
                case 23: /* 7.24 System Reset */
-                       printf("System Reset\n");
+                       pr_handle_name("System Reset");
                        if (h->length < 0x0D) break;
                        printf("\tStatus: %s\n",
                                data[0x04] & (1 << 0) ? "Enabled" : "Disabled");
@@ -4645,7 +4644,7 @@ static void dmi_decode(const struct dmi_
                        break;
 
                case 24: /* 7.25 Hardware Security */
-                       printf("Hardware Security\n");
+                       pr_handle_name("Hardware Security");
                        if (h->length < 0x05) break;
                        printf("\tPower-On Password Status: %s\n",
                                dmi_hardware_security_status(data[0x04] >> 6));
@@ -4658,7 +4657,7 @@ static void dmi_decode(const struct dmi_
                        break;
 
                case 25: /* 7.26 System Power Controls */
-                       printf("System Power Controls\n");
+                       pr_handle_name("System Power Controls");
                        if (h->length < 0x09) break;
                        printf("\tNext Scheduled Power-on:");
                        dmi_power_controls_power_on(data + 0x04);
@@ -4666,7 +4665,7 @@ static void dmi_decode(const struct dmi_
                        break;
 
                case 26: /* 7.27 Voltage Probe */
-                       printf("Voltage Probe\n");
+                       pr_handle_name("Voltage Probe");
                        if (h->length < 0x14) break;
                        printf("\tDescription: %s\n",
                                dmi_string(h, data[0x04]));
@@ -4698,7 +4697,7 @@ static void dmi_decode(const struct dmi_
                        break;
 
                case 27: /* 7.28 Cooling Device */
-                       printf("Cooling Device\n");
+                       pr_handle_name("Cooling Device");
                        if (h->length < 0x0C) break;
                        if (!(opt.flags & FLAG_QUIET) && WORD(data + 0x04) != 
0xFFFF)
                                printf("\tTemperature Probe Handle: 0x%04X\n",
@@ -4721,7 +4720,7 @@ static void dmi_decode(const struct dmi_
                        break;
 
                case 28: /* 7.29 Temperature Probe */
-                       printf("Temperature Probe\n");
+                       pr_handle_name("Temperature Probe");
                        if (h->length < 0x14) break;
                        printf("\tDescription: %s\n",
                                dmi_string(h, data[0x04]));
@@ -4753,7 +4752,7 @@ static void dmi_decode(const struct dmi_
                        break;
 
                case 29: /* 7.30 Electrical Current Probe */
-                       printf("Electrical Current Probe\n");
+                       pr_handle_name("Electrical Current Probe");
                        if (h->length < 0x14) break;
                        printf("\tDescription: %s\n",
                                dmi_string(h, data[0x04]));
@@ -4785,7 +4784,7 @@ static void dmi_decode(const struct dmi_
                        break;
 
                case 30: /* 7.31 Out-of-band Remote Access */
-                       printf("Out-of-band Remote Access\n");
+                       pr_handle_name("Out-of-band Remote Access");
                        if (h->length < 0x06) break;
                        printf("\tManufacturer Name: %s\n",
                                dmi_string(h, data[0x04]));
@@ -4796,7 +4795,7 @@ static void dmi_decode(const struct dmi_
                        break;
 
                case 31: /* 7.32 Boot Integrity Services Entry Point */
-                       printf("Boot Integrity Services Entry Point\n");
+                       pr_handle_name("Boot Integrity Services Entry Point");
                        if (h->length < 0x1C) break;
                        printf("\tChecksum: %s\n",
                                checksum(data, h->length) ? "OK" : "Invalid");
@@ -4808,14 +4807,14 @@ static void dmi_decode(const struct dmi_
                        break;
 
                case 32: /* 7.33 System Boot Information */
-                       printf("System Boot Information\n");
+                       pr_handle_name("System Boot Information");
                        if (h->length < 0x0B) break;
                        printf("\tStatus: %s\n",
                                dmi_system_boot_status(data[0x0A]));
                        break;
 
                case 33: /* 7.34 64-bit Memory Error Information */
-                       printf("64-bit Memory Error Information\n");
+                       pr_handle_name("64-bit Memory Error Information");
                        if (h->length < 0x1F) break;
                        printf("\tType: %s\n",
                                dmi_memory_error_type(data[0x04]));
@@ -4838,7 +4837,7 @@ static void dmi_decode(const struct dmi_
                        break;
 
                case 34: /* 7.35 Management Device */
-                       printf("Management Device\n");
+                       pr_handle_name("Management Device");
                        if (h->length < 0x0B) break;
                        printf("\tDescription: %s\n",
                                dmi_string(h, data[0x04]));
@@ -4851,7 +4850,7 @@ static void dmi_decode(const struct dmi_
                        break;
 
                case 35: /* 7.36 Management Device Component */
-                       printf("Management Device Component\n");
+                       pr_handle_name("Management Device Component");
                        if (h->length < 0x0B) break;
                        printf("\tDescription: %s\n",
                                dmi_string(h, data[0x04]));
@@ -4868,7 +4867,7 @@ static void dmi_decode(const struct dmi_
                        break;
 
                case 36: /* 7.37 Management Device Threshold Data */
-                       printf("Management Device Threshold Data\n");
+                       pr_handle_name("Management Device Threshold Data");
                        if (h->length < 0x10) break;
                        if (WORD(data + 0x04) != 0x8000)
                                printf("\tLower Non-critical Threshold: %d\n",
@@ -4891,7 +4890,7 @@ static void dmi_decode(const struct dmi_
                        break;
 
                case 37: /* 7.38 Memory Channel */
-                       printf("Memory Channel\n");
+                       pr_handle_name("Memory Channel");
                        if (h->length < 0x07) break;
                        printf("\tType: %s\n",
                                dmi_memory_channel_type(data[0x04]));
@@ -4908,7 +4907,7 @@ static void dmi_decode(const struct dmi_
                         * We use the word "Version" instead of "Revision", 
conforming to
                         * the IPMI specification.
                         */
-                       printf("IPMI Device Information\n");
+                       pr_handle_name("IPMI Device Information");
                        if (h->length < 0x10) break;
                        printf("\tInterface Type: %s\n",
                                dmi_ipmi_interface_type(data[0x04]));
@@ -4946,7 +4945,7 @@ static void dmi_decode(const struct dmi_
                        break;
 
                case 39: /* 7.40 System Power Supply */
-                       printf("System Power Supply\n");
+                       pr_handle_name("System Power Supply");
                        if (h->length < 0x10) break;
                        if (data[0x04] != 0x00)
                                printf("\tPower Unit Group: %u\n",
@@ -5006,7 +5005,7 @@ static void dmi_decode(const struct dmi_
                        break;
 
                case 41: /* 7.42 Onboard Device Extended Information */
-                       printf("Onboard Device\n");
+                       pr_handle_name("Onboard Device");
                        if (h->length < 0x0B) break;
                        printf("\tReference Designation: %s\n", dmi_string(h, 
data[0x04]));
                        printf("\tType: %s\n",
@@ -5018,7 +5017,7 @@ static void dmi_decode(const struct dmi_
                        break;
 
                case 42: /* 7.43 Management Controller Host Interface */
-                       printf("Management Controller Host Interface\n");
+                       pr_handle_name("Management Controller Host Interface");
                        if (ver < 0x0302)
                        {
                                if (h->length < 0x05) break;
@@ -5043,7 +5042,7 @@ static void dmi_decode(const struct dmi_
                        break;
 
                case 43: /* 7.44 TPM Device */
-                       printf("TPM Device\n");
+                       pr_handle_name("TPM Device");
                        if (h->length < 0x1B) break;
                        printf("\tVendor ID:");
                        dmi_tpm_vendor_id(data + 0x04);
@@ -5080,11 +5079,11 @@ static void dmi_decode(const struct dmi_
                        break;
 
                case 126: /* 7.44 Inactive */
-                       printf("Inactive\n");
+                       pr_handle_name("Inactive");
                        break;
 
                case 127: /* 7.45 End Of Table */
-                       printf("End Of Table\n");
+                       pr_handle_name("End Of Table");
                        break;
 
                default:
@@ -5092,7 +5091,7 @@ static void dmi_decode(const struct dmi_
                                break;
                        if (opt.flags & FLAG_QUIET)
                                return;
-                       printf("%s Type\n",
+                       pr_handle_name("%s Type",
                                h->type >= 128 ? "OEM-specific" : "Unknown");
                        dmi_dump(h, "\t");
        }
--- dmidecode.orig/dmioem.c     2020-03-16 10:27:50.799980004 +0100
+++ dmidecode/dmioem.c  2020-03-24 15:00:19.058165425 +0100
@@ -25,6 +25,7 @@
 #include "types.h"
 #include "dmidecode.h"
 #include "dmioem.h"
+#include "dmioutput.h"
 
 /*
  * Globals for vendor-specific decodes
@@ -92,7 +93,7 @@ static int dmi_decode_acer(const struct
                         * brands, including Fujitsu-Siemens, Medion, Lenovo,
                         * and eMachines.
                         */
-                       printf("Acer Hotkey Function\n");
+                       pr_handle_name("Acer Hotkey Function");
                        if (h->length < 0x0F) break;
                        cap = WORD(data + 0x04);
                        printf("\tFunction bitmap for Communication Button: 
0x%04hx\n", cap);
@@ -157,7 +158,7 @@ static int dmi_decode_hp(const struct dm
                        /*
                         * Vendor Specific: HPE ProLiant System/Rack Locator
                         */
-                       printf("%s ProLiant System/Rack Locator\n", company);
+                       pr_handle_name("%s ProLiant System/Rack Locator", 
company);
                        if (h->length < 0x0B) break;
                        printf("\tRack Name: %s\n", dmi_string(h, data[0x04]));
                        printf("\tEnclosure Name: %s\n", dmi_string(h, 
data[0x05]));
@@ -189,10 +190,9 @@ static int dmi_decode_hp(const struct dm
                         *
                         * Type 221: is deprecated in the latest docs
                         */
-                       printf("%s %s\n", company,
-                               h->type == 221 ?
-                                       "BIOS iSCSI NIC PCI and MAC 
Information" :
-                                       "BIOS PXE NIC PCI and MAC Information");
+                       pr_handle_name("%s %s", company, h->type == 221 ?
+                                      "BIOS iSCSI NIC PCI and MAC Information" 
:
+                                      "BIOS PXE NIC PCI and MAC Information");
                        nic = 1;
                        ptr = 4;
                        while (h->length >= ptr + 8)
@@ -224,7 +224,8 @@ static int dmi_decode_hp(const struct dm
                         *  0x08  |   MAC  | 32B   | MAC addr padded w/ 0s
                         *  0x28  | Port No| BYTE  | Each NIC maps to a Port
                         */
-                       printf("%s BIOS PXE NIC PCI and MAC Information\n", 
company);
+                       pr_handle_name("%s BIOS PXE NIC PCI and MAC 
Information",
+                                      company);
                        if (h->length < 0x0E) break;
                        /* If the record isn't long enough, we don't have an ID
                         * use 0xFF to use the internal counter.
@@ -240,7 +241,7 @@ static int dmi_decode_hp(const struct dm
                         *
                         * Source: hpwdt kernel driver
                         */
-                       printf("%s 64-bit CRU Information\n", company);
+                       pr_handle_name("%s 64-bit CRU Information", company);
                        if (h->length < 0x18) break;
                        printf("\tSignature: 0x%08x", DWORD(data + 0x04));
                        if (is_printable(data + 0x04, 4))
@@ -265,7 +266,7 @@ static int dmi_decode_hp(const struct dm
                         *
                         * Source: hpwdt kernel driver
                         */
-                       printf("%s ProLiant Information\n", company);
+                       pr_handle_name("%s ProLiant Information", company);
                        if (h->length < 0x08) break;
                        printf("\tPower Features: 0x%08x\n", DWORD(data + 
0x04));
                        if (h->length < 0x0C) break;
@@ -318,7 +319,7 @@ static int dmi_decode_ibm_lenovo(const s
                         || strcmp(dmi_string(h, 1), "TVT-Enablement") != 0)
                                return 0;
 
-                       printf("ThinkVantage Technologies\n");
+                       pr_handle_name("ThinkVantage Technologies");
                        printf("\tVersion: %u\n", data[0x04]);
                        printf("\tDiagnostics: %s\n",
                                data[0x14] & 0x80 ? "Available" : "No");
@@ -357,7 +358,7 @@ static int dmi_decode_ibm_lenovo(const s
                        if (data[0x06] != 0x07 || data[0x07] != 0x03 || 
data[0x08] != 0x01)
                                return 0;
 
-                       printf("ThinkPad Device Presence Detection\n");
+                       pr_handle_name("ThinkPad Device Presence Detection");
                        printf("\tFingerprint Reader: %s\n",
                                data[0x09] & 0x01 ? "Present" : "No");
                        break;
@@ -390,7 +391,7 @@ static int dmi_decode_ibm_lenovo(const s
                        if (data[0x0A] != 0x0B || data[0x0B] != 0x07 || 
data[0x0C] != 0x01)
                                return 0;
 
-                       printf("ThinkPad Embedded Controller Program\n");
+                       pr_handle_name("ThinkPad Embedded Controller Program");
                        printf("\tVersion ID: %s\n", dmi_string(h, 1));
                        printf("\tRelease Date: %s\n", dmi_string(h, 2));
                        break;
--- dmidecode.orig/dmioutput.c  2020-03-24 15:00:09.831053059 +0100
+++ dmidecode/dmioutput.c       2020-03-24 15:00:19.058165425 +0100
@@ -49,3 +49,13 @@ void pr_handle(const struct dmi_header *
        printf("Handle 0x%04X, DMI type %d, %d bytes\n",
               h->handle, h->type, h->length);
 }
+
+void pr_handle_name(const char *format, ...)
+{
+       va_list args;
+
+       va_start(args, format);
+       vprintf(format, args);
+       va_end(args);
+       printf("\n");
+}
--- dmidecode.orig/dmioutput.h  2020-03-24 15:00:09.831053059 +0100
+++ dmidecode/dmioutput.h       2020-03-24 15:00:19.058165425 +0100
@@ -24,3 +24,4 @@
 void pr_comment(const char *format, ...);
 void pr_info(const char *format, ...);
 void pr_handle(const struct dmi_header *h);
+void pr_handle_name(const char *format, ...);

-- 
Jean Delvare
SUSE L3 Support



reply via email to

[Prev in Thread] Current Thread [Next in Thread]