diff options
-rw-r--r-- | Makefile | 4 | ||||
-rw-r--r-- | dmidecode.c | 33 | ||||
-rw-r--r-- | dmidecode.h | 2 | ||||
-rwxr-xr-x | example.py | 4 |
4 files changed, 23 insertions, 20 deletions
@@ -9,8 +9,8 @@ # #. Bug in python2.4 PyString_FromFormat that results in not interpreting printf style formatting with %u and %lu. -#PY = $(shell python -V 2>&1 |sed -e 's/.\(ython\) \(2\.[0-9]\)\..*/p\1\2/') -PY = python2.5 +PY = $(shell python -V 2>&1 |sed -e 's/.\(ython\) \(2\.[0-9]\)\..*/p\1\2/') +#PY = python2.5 CC = gcc CFLAGS = -fno-strict-aliasing -D_XOPEN_SOURCE=600 diff --git a/dmidecode.c b/dmidecode.c index e10b931..d461c6b 100644 --- a/dmidecode.c +++ b/dmidecode.c @@ -1021,15 +1021,14 @@ static PyObject *dmi_processor_voltage(u8 code) { return data; } -const char *dmi_processor_frequency(u8 *p, char *_) { +int dmi_processor_frequency(u8 *p) { u16 code = WORD(p); - if(code) sprintf(_, "%u MHz", code); - else sprintf(_, "Unknown"); - return _; + if(code) return code; //. Value measured in MHz + else return -1; //. Unknown } -static PyObject *dmi_processor_frequency_py(u8 *p, char *_) { - return PyString_FromString(dmi_processor_frequency(p, _)); +static PyObject *dmi_processor_frequency_py(u8 *p) { + return PyInt_FromLong(dmi_processor_frequency(p)); } static const char *dmi_processor_status(u8 code) { @@ -2034,11 +2033,12 @@ static PyObject *dmi_memory_device_width(u16 code) { static PyObject *dmi_memory_device_size(u16 code) { PyObject *data = NULL; - if(code==0) data = PyString_FromString("No Module Installed"); - else if(code==0xFFFF) data = PyString_FromString(" Unknown"); + if(code==0) data = Py_None; //. No Module Installed + else if(code==0xFFFF) data = PyString_FromString("Unknown"); //. Unknown else { - if(code&0x8000) data = PyString_FromFormat("%u kB", code&0x7FFF); - else data = PyString_FromFormat("%u MB", code); + //. Keeping this as String rather than Int as it has KB and MB representations... + if(code&0x8000) data = PyString_FromFormat("%d KB", code&0x7FFF); + else data = PyString_FromFormat("%d MB", code); } return data; } @@ -3088,15 +3088,15 @@ PyObject* dmi_decode(struct dmi_header *h, u16 ver) { PyDict_SetItemString(caseData, "Voltage", _val); Py_DECREF(_val); - _val = dmi_processor_frequency_py(data+0x12, _); + _val = dmi_processor_frequency_py(data+0x12); PyDict_SetItemString(caseData, "External Clock", _val); Py_DECREF(_val); - _val = dmi_processor_frequency_py(data+0x14, _); + _val = dmi_processor_frequency_py(data+0x14); PyDict_SetItemString(caseData, "Max Speed", _val); Py_DECREF(_val); - _val = dmi_processor_frequency_py(data+0x16, _); + _val = dmi_processor_frequency_py(data+0x16); PyDict_SetItemString(caseData, "Current Speed", _val); Py_DECREF(_val); @@ -3507,7 +3507,7 @@ PyObject* dmi_decode(struct dmi_header *h, u16 ver) { Py_DECREF(_val); } - _val = PyString_FromFormat("%u", WORD(data+0x0D)); + _val = PyInt_FromLong(WORD(data+0x0D)); PyDict_SetItemString(caseData, "Number Of Devices", _val); Py_DECREF(_val); break; @@ -4463,7 +4463,10 @@ static void dmi_table(u32 base, u16 len, u16 num, u16 ver, const char *devmem, P dmi_dump(&h, _); dmiSetItem(hDict, "lookup", _); } else { - PyDict_SetItem(hDict, PyInt_FromLong(i), dmi_decode(&h, ver)); + //. TODO: //. Is the value of `i' important?... + //. TODO: PyDict_SetItem(hDict, PyInt_FromLong(i), dmi_decode(&h, ver)); + //. TODO: ...removed and replaced with `data'... + PyDict_SetItem(hDict, PyString_FromString("data"), dmi_decode(&h, ver)); PyDict_SetItem(pydata, PyString_FromString(hid), hDict); } } else if(!(opt.flags & FLAG_QUIET)) diff --git a/dmidecode.h b/dmidecode.h index ab4f820..5a0a768 100644 --- a/dmidecode.h +++ b/dmidecode.h @@ -40,6 +40,6 @@ const char *dmi_system_uuid(u8 *p, char *_); PyObject *dmi_system_uuid_py(u8 *p); const char *dmi_chassis_type(u8 code); const char *dmi_processor_family(u8 code); -const char *dmi_processor_frequency(u8 *p, char *_); +int dmi_processor_frequency(u8 *p); int submain(int argc, char * const argv[]); @@ -1,4 +1,4 @@ -#!/usr/bin/env python2.5 +#!/usr/bin/env python2.3 import dmidecode import sys from pprint import pprint @@ -7,7 +7,7 @@ from pprint import pprint #print "*** baseboard ***\n"; pprint(dmidecode.baseboard()) #print "*** chassis ***\n"; pprint(dmidecode.chassis()) #print "*** processor ***\n"; pprint(dmidecode.processor()) -#print "*** memory ***\n"; pprint(dmidecode.memory()) +print "*** memory ***\n"; pprint(dmidecode.memory()) #print "*** cache ***\n"; pprint(dmidecode.cache()) #print "*** connector ***\n"; pprint(dmidecode.connector()) #print "*** slot ***\n"; pprint(dmidecode.slot()) |