hdt: Making dumping code easier to use
authorErwan Velu <erwanaliasr1@gmail.com>
Sun, 3 Apr 2011 18:59:34 +0000 (20:59 +0200)
committerErwan Velu <erwanaliasr1@gmail.com>
Sun, 3 Apr 2011 18:59:34 +0000 (20:59 +0200)
A set of CREATE_NEW_OBJECT / FLUSH is enough for a simple dump.

com32/hdt/hdt-dump-cpu.c
com32/hdt/hdt-dump-disks.c
com32/hdt/hdt-dump-dmi.c
com32/hdt/hdt-dump-memory.c
com32/hdt/hdt-dump-pci.c
com32/hdt/hdt-dump-pxe.c
com32/hdt/hdt-dump-syslinux.c
com32/hdt/hdt-dump-vesa.c
com32/hdt/hdt-dump-vpd.c

index dc58a6f..33d561c 100644 (file)
@@ -31,7 +31,7 @@
 
 void dump_cpu(struct s_hardware *hardware, ZZJSON_CONFIG *config, ZZJSON **item) {
 
-        *item = zzjson_create_object(config, NULL); /* empty object */
+        CREATE_NEW_OBJECT;
        add_hs(cpu.vendor);
        add_hs(cpu.model);
        add_hi(cpu.vendor_id);
@@ -48,6 +48,6 @@ void dump_cpu(struct s_hardware *hardware, ZZJSON_CONFIG *config, ZZJSON **item)
                snprintf(temp,sizeof(temp),"cpu.flags.%s",cpu_flags_names[i]);
                add_b(temp,get_cpu_flag_value_from_name(&hardware->cpu,cpu_flags_names[i]));
        }
-
-       flush("cpu",config,item);
+       FLUSH_OBJECT;
+       to_cpio("cpu");
 }
index a8e856f..ed2aea3 100644 (file)
@@ -123,7 +123,7 @@ void dump_disks(struct s_hardware *hardware, ZZJSON_CONFIG *config, ZZJSON **ite
        for (int drive = 0x80; drive < 0xff; drive++) {
                if (hardware->disk_info[drive - 0x80].cbios) {
                        if (found==false) {
-                               *item = zzjson_create_object(config, NULL); /* empty object */
+                               CREATE_NEW_OBJECT;
                                add_b("disks->is_valid",true);
                                        found=true;
                        }
@@ -132,8 +132,9 @@ void dump_disks(struct s_hardware *hardware, ZZJSON_CONFIG *config, ZZJSON **ite
        }
 
        if (found==false) {
-               *item = zzjson_create_object(config, NULL); /* empty object */
+               CREATE_NEW_OBJECT;
                add_b("disks->is_valid",false);
+               FLUSH_OBJECT;
        }
-       flush("disks",config,item);
+       to_cpio("disks");
 }
index 8df9e61..6e5c1ce 100644 (file)
@@ -420,6 +420,7 @@ void dump_dmi(struct s_hardware *hardware, ZZJSON_CONFIG *config, ZZJSON **item)
        add_hb(is_dmi_valid);
 
        if (hardware->is_dmi_valid == false) {
+               FLUSH_OBJECT;
                goto exit;
        } else {
                char buffer[8]={0};
@@ -442,5 +443,5 @@ void dump_dmi(struct s_hardware *hardware, ZZJSON_CONFIG *config, ZZJSON **item)
        dump_oem_strings(hardware,config,item);
        dump_hardware_security(hardware,config,item);
 exit:
-       flush("dmi",config,item);
+       to_cpio("dmi");
 }
index 5482354..5095d3c 100644 (file)
@@ -34,41 +34,38 @@ void dump_88(struct s_hardware *hardware, ZZJSON_CONFIG *config, ZZJSON **item)
 
        (void) hardware;
        int mem_size = 0;
+       CREATE_NEW_OBJECT;
        if (detect_memory_88(&mem_size)) {
-               APPEND_ARRAY
-                       add_as("memory.error","8800h memory configuration is invalid")
-               END_OF_APPEND;
+               add_s("memory.error","8800h memory configuration is invalid");
+               FLUSH_OBJECT
                return;
        }
 
-       APPEND_ARRAY
-       add_as("dmi.item","memory via 88")
-       add_ai("memory.size (KiB)", mem_size)
-       add_ai("memory.size (MiB)", mem_size >> 10)
-       END_OF_APPEND;
-
+       add_s("dmi.item","memory via 88");
+       add_i("memory.size (KiB)", mem_size);
+       add_i("memory.size (MiB)", mem_size >> 10);
+       FLUSH_OBJECT;
 }
 
 void dump_e801(struct s_hardware *hardware, ZZJSON_CONFIG *config, ZZJSON **item) {
 
        (void) hardware;
        int mem_low, mem_high = 0;
+       CREATE_NEW_OBJECT;
        if (detect_memory_e801(&mem_low,&mem_high)) {
-               APPEND_ARRAY
-                       add_as("memory.error","e801 memory configuration is invalid")
-               END_OF_APPEND;
+               add_s("memory.error","e801 memory configuration is invalid");
+               FLUSH_OBJECT;
                return;
        }
 
-       APPEND_ARRAY
-       add_as("dmi.item","memory via e801")
-       add_ai("memory.total.size (KiB)", mem_low + (mem_high << 6))
-       add_ai("memory.total.size (MiB)", (mem_low >> 10) + (mem_high >> 4))
-       add_ai("memory.low.size (KiB)", mem_low )
-       add_ai("memory.low.size (MiB)", mem_low >> 10)
-       add_ai("memory.high.size (KiB)", mem_high << 6)
-       add_ai("memory.high.size (MiB)", mem_high >> 4)
-       END_OF_APPEND;
+       add_s("dmi.item","memory via e801");
+       add_i("memory.total.size (KiB)", mem_low + (mem_high << 6));
+       add_i("memory.total.size (MiB)", (mem_low >> 10) + (mem_high >> 4));
+       add_i("memory.low.size (KiB)", mem_low );
+       add_i("memory.low.size (MiB)", mem_low >> 10);
+       add_i("memory.high.size (KiB)", mem_high << 6);
+       add_i("memory.high.size (MiB)", mem_high >> 4);
+       FLUSH_OBJECT;
 
 }
 void dump_e820(struct s_hardware *hardware, ZZJSON_CONFIG *config, ZZJSON **item) {
@@ -82,12 +79,12 @@ void dump_e820(struct s_hardware *hardware, ZZJSON_CONFIG *config, ZZJSON **item
        
        detect_memory_e820(map, E820MAX, &count);
        memsize = memsize_e820(map, count);
-
-       APPEND_ARRAY
-               add_as("dmi.item","memory via e820")
-               add_ai("memory.total.size (KiB)", memsize)
-               add_ai("memory.total.size (MiB)", (memsize + (1 << 9)) >> 10)
-       END_OF_APPEND;
+       
+       CREATE_NEW_OBJECT;
+               add_s("dmi.item","memory via e820");
+               add_i("memory.total.size (KiB)", memsize);
+               add_i("memory.total.size (MiB)", (memsize + (1 << 9)) >> 10);
+       FLUSH_OBJECT;
 
        for (int i = 0; i < count; i++) {
                get_type(map[i].type, type, sizeof(type));
@@ -97,12 +94,12 @@ void dump_e820(struct s_hardware *hardware, ZZJSON_CONFIG *config, ZZJSON **item
                snprintf(begin,sizeof(begin),"0x%016llx",map[i].addr);
                snprintf(size,sizeof(size),"0x%016llx",map[i].size);
                snprintf(end,sizeof(end),"0x%016llx",map[i].addr+map[i].size);
-               CREATE_TEMP_OBJECT
-                       add_ts("memory.segment.start",begin);
-                       add_ts("memory.segment.size ",size);
-                       add_ts("memory.segment.end  ",end);
-                       add_ts("memory.segment.type ",remove_spaces(type));
-               APPEND_TEMP_OBJECT_ARRAY;
+               CREATE_NEW_OBJECT;
+                       add_s("memory.segment.start",begin);
+                       add_s("memory.segment.size ",size);
+                       add_s("memory.segment.end  ",end);
+                       add_s("memory.segment.type ",remove_spaces(type));
+               FLUSH_OBJECT;
        }
 
        int nr = sanitize_e820_map(map, nm, count);
@@ -114,23 +111,23 @@ void dump_e820(struct s_hardware *hardware, ZZJSON_CONFIG *config, ZZJSON **item
                snprintf(begin,sizeof(begin),"0x%016llx",nm[i].addr);
                snprintf(size,sizeof(size),"0x%016llx",nm[i].size);
                snprintf(end,sizeof(end),"0x%016llx",nm[i].addr+nm[i].size);
-               CREATE_TEMP_OBJECT
-                       add_ts("sanitized_memory.segment.start",begin);
-                       add_ts("sanitized_memory.segment.size ",size);
-                       add_ts("sanitized_memory.segment.end  ",end);
-                       add_ts("sanitized_memory.segment.type ",remove_spaces(type));
-               APPEND_TEMP_OBJECT_ARRAY;
+               CREATE_NEW_OBJECT;
+                       add_s("sanitized_memory.segment.start",begin);
+                       add_s("sanitized_memory.segment.size ",size);
+                       add_s("sanitized_memory.segment.end  ",end);
+                       add_s("sanitized_memory.segment.type ",remove_spaces(type));
+               FLUSH_OBJECT;
        }
 }
 
 void dump_memory(struct s_hardware *hardware, ZZJSON_CONFIG *config, ZZJSON **item) {
 
-       CREATE_ARRAY
-               add_as("Memory configuration","true")
-       END_OF_ARRAY;   
+       CREATE_NEW_OBJECT;
+               add_s("Memory configuration","true");
+       FLUSH_OBJECT;
 
        dump_88(hardware,config,item);
        dump_e801(hardware,config,item);
        dump_e820(hardware,config,item);
-       flush("memory",config,item);
+       to_cpio("memory");
 }
index 9d89f3a..b1f18fd 100644 (file)
@@ -54,10 +54,11 @@ void dump_pci(struct s_hardware *hardware, ZZJSON_CONFIG * config,
 
     nomodulesfile = nomodulespcimap && nomodulesalias;
 
-    *item = zzjson_create_object(config, NULL);        /* empty object */
+    CREATE_NEW_OBJECT;
 
     add_i("pci_device.count", hardware->nb_pci_devices);
 
+    FLUSH_OBJECT;
     /* For every detected pci device, compute its submenu */
     for_each_pci_func(pci_device, hardware->pci_domain) {
        if (pci_device == NULL)
@@ -69,9 +70,7 @@ void dump_pci(struct s_hardware *hardware, ZZJSON_CONFIG * config,
        char c[10] = { 0 };
        char r[10] = { 0 };
 
-        zzjson_print(config, *item);
-        zzjson_free(config, *item);
-        *item = zzjson_create_object(config, NULL);    /* empty object */
+       CREATE_NEW_OBJECT;
        bus = __pci_bus;
        slot = __pci_slot;
        func = __pci_func;
@@ -112,8 +111,8 @@ void dump_pci(struct s_hardware *hardware, ZZJSON_CONFIG * config,
        add_s("pci_device.product_id", p);
        add_s("pci_device.sub_vendor_id", sv);
        add_s("pci_device.sub_product_id", sp);
-//     add_s("pci_device.class_id", c);
-//     add_s("pci_device.revision", r);
+       add_s("pci_device.class_id", c);
+       add_s("pci_device.revision", r);
        if ((pci_device->dev_info->irq > 0)
            && (pci_device->dev_info->irq < 255))
            add_i("pci_device.irq", pci_device->dev_info->irq);
@@ -131,6 +130,7 @@ void dump_pci(struct s_hardware *hardware, ZZJSON_CONFIG * config,
            }
        }
        i++;
+       FLUSH_OBJECT;
     }
-    flush("pci", config, item);
+    to_cpio("pci");
 }
index 2cd214b..6f4f511 100644 (file)
@@ -33,7 +33,7 @@
 
 void dump_pxe(struct s_hardware *hardware, ZZJSON_CONFIG *config, ZZJSON **item) {
 
-        *item = zzjson_create_object(config, NULL); /* empty object */
+       CREATE_NEW_OBJECT;
        add_hb(is_pxe_valid);
        if (hardware->is_pxe_valid) {
                char buffer[32] = {0};
@@ -76,5 +76,6 @@ void dump_pxe(struct s_hardware *hardware, ZZJSON_CONFIG *config, ZZJSON **item)
                add_s("pxe.ipaddr",ip);
                add_b("gpxe_detected",is_gpxe());
        }
-       flush("pxe",config,item);
+       FLUSH_OBJECT;
+       to_cpio("pxe");
 }
index 843ebaf..7cef925 100644 (file)
 
 void dump_syslinux(struct s_hardware *hardware, ZZJSON_CONFIG *config, ZZJSON **item) {
 
-        *item = zzjson_create_object(config, NULL); /* empty object */
+       CREATE_NEW_OBJECT;
        add_hs(syslinux_fs);
        add_hs(sv->version_string);
        add_hi(sv->version);
        add_hi(sv->max_api);
        add_hs(sv->copyright_string);
-       flush("syslinux",config,item);
+       FLUSH_OBJECT
+       to_cpio("syslinux");
 }
index ddf096f..97ff9fc 100644 (file)
@@ -37,6 +37,7 @@ void dump_vesa(struct s_hardware *hardware, ZZJSON_CONFIG *config, ZZJSON **item
        if (hardware->is_vesa_valid) {
                char buffer[64]={0};
                snprintf(buffer,sizeof(buffer),"%d.%d", hardware->vesa.major_version, hardware->vesa.minor_version);
+               printf("buffer='%s'\n",buffer);
                add_s("vesa.version",buffer);
                add_hs(vesa.vendor);
                add_hs(vesa.product);
@@ -46,11 +47,11 @@ void dump_vesa(struct s_hardware *hardware, ZZJSON_CONFIG *config, ZZJSON **item
                snprintf(buffer,sizeof(buffer),"%d KB",hardware->vesa.total_memory*64);
                add_s("vesa.memory",buffer);
                add_i("vesa.modes",hardware->vesa.vmi_count);
+               FLUSH_OBJECT;
                for (int i = 0; i < hardware->vesa.vmi_count; i++) {
                        struct vesa_mode_info *mi = &hardware->vesa.vmi[i].mi;
                        if ((mi->h_res == 0) || (mi->v_res == 0))
                                continue;
-                       FLUSH_OBJECT;
                        CREATE_NEW_OBJECT;
                        memset(buffer,0,sizeof(buffer));
                        snprintf(buffer,sizeof(buffer),"0x%04x",hardware->vesa.vmi[i].mode + 0x200);
@@ -58,7 +59,10 @@ void dump_vesa(struct s_hardware *hardware, ZZJSON_CONFIG *config, ZZJSON **item
                        add_i("vesa.hres",mi->h_res);
                        add_i("vesa.vres",mi->v_res);
                        add_i("vesa.bpp",mi->bpp);
+                       FLUSH_OBJECT;
                }
+       } else {
+               FLUSH_OBJECT;
        }
-       flush("vesa",config,item);
+       to_cpio("vesa");
 }
index 9e4a78e..36451c8 100644 (file)
@@ -31,8 +31,7 @@
 
 void dump_vpd(struct s_hardware *hardware, ZZJSON_CONFIG *config, ZZJSON **item) {
 
-        
-       *item = zzjson_create_object(config, NULL); /* empty object */
+       CREATE_NEW_OBJECT;
        add_hb(is_vpd_valid);
        if (hardware->is_vpd_valid) {
                add_hs(vpd.bios_build_id);
@@ -43,5 +42,6 @@ void dump_vpd(struct s_hardware *hardware, ZZJSON_CONFIG *config, ZZJSON **item)
                add_hs(vpd.motherboard_serial_number);
                add_hs(vpd.machine_type_model);
        }
-       flush("vpd",config,item);
+       FLUSH_OBJECT;
+       to_cpio("vpd");
 }